eclipselink
eclipselink copied to clipboard
MetaModel Generator fails on Records
Although not being used for persistence, the modelgen is erroring on Java 14 Records.
Dependency: org.eclipse.persistence:org.eclipse.persistence.jpa.modelgen.processor:2.7.10
StackTrace:
javax.lang.model.element.UnknownElementException: Unknown element: "id"
at javax.lang.model.util.AbstractElementVisitor6.visitUnknown (AbstractElementVisitor6.java:129)
at javax.lang.model.element.ElementVisitor.visitRecordComponent (ElementVisitor.java:225)
at javax.lang.model.util.AbstractElementVisitor6.visitRecordComponent (AbstractElementVisitor6.java:166)
at com.sun.tools.javac.code.Symbol$RecordComponent.accept (Symbol.java:1827)
at org.eclipse.persistence.internal.jpa.modelgen.visitors.ElementVisitor.visitType (ElementVisitor.java:250)
at org.eclipse.persistence.internal.jpa.modelgen.visitors.ElementVisitor.visitType (ElementVisitor.java:57)
at com.sun.tools.javac.code.Symbol$ClassSymbol.accept (Symbol.java:1561)
at org.eclipse.persistence.internal.jpa.modelgen.MetadataMirrorFactory.getMetadataClass (MetadataMirrorFactory.java:140)
at org.eclipse.persistence.internal.jpa.modelgen.MetadataMirrorFactory.setEnvironments (MetadataMirrorFactory.java:353)
at org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor.process (CanonicalModelProcessor.java:206)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor (JavacProcessingEnvironment.java:1023)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs (JavacProcessingEnvironment.java:939)
at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run (JavacProcessingEnvironment.java:1267)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing (JavacProcessingEnvironment.java:1382)
at com.sun.tools.javac.main.JavaCompiler.processAnnotations (JavaCompiler.java:1234)
at com.sun.tools.javac.main.JavaCompiler.compile (JavaCompiler.java:916)
at com.sun.tools.javac.api.JavacTaskImpl.lambda$doCall$0 (JavacTaskImpl.java:104)
at com.sun.tools.javac.api.JavacTaskImpl.invocationHelper (JavacTaskImpl.java:152)
at com.sun.tools.javac.api.JavacTaskImpl.doCall (JavacTaskImpl.java:100)
at com.sun.tools.javac.api.JavacTaskImpl.call (JavacTaskImpl.java:94)
To fix this, org.eclipse.persistence.internal.jpa.modelgen.visitors.ElementVisitor has to override the default implementation of visitRecordComponent(RecordComponentElement e, P p).
As a first step, I think it should suffice to simply return null;. This should make the code compile again, but would probably still not allow a record to be used as a JPA entity.
Any chance of adding that return null; to the current stable version (3.0.3)?