GEDOPLAN
Jakarta EE (Java EE)

JPA-Metamodell-Generator von OpenJPA inaktiv

Jakarta EE (Java EE)

Der Java-Compiler erzeugt automatisch die JPA-Metamodellklassen zu den persistenten Klassen der Anwendung, wenn ein entsprechende Annotation Processor im Classpath ist. Kandidaten dafür sind bspw. org.hibernate:hibernate-jpamodelgen:1.2.0.Final oder org.apache.openjpa:openjpa:2.2.1.

Der zuletzt genannte Processor von OpenJPA generiert die Metamodellklassen nur dann, wenn beim Compileraufruf die Option -Aopenjpa.metamodel=true mitgegeben wird.

Damit ist ein Problem verbunden: Sollten mehrere Metamodell-Generatoren im Compiler-Classpath sein, verdeckt der erste die restlichen. Der Annotation Processor Discovery Process im Compiler matcht nämlich die zu verarbeitenden Annotationen (z. B. @Entity) mit den verfügbaren Annotation Processors in der Weise, dass jede Annotation nur von einem Processor verarbeitet wird, und zwar von dem, der in der Service-Liste (META-INF/services/javax.annotation.processing.Processor) vorne steht. Die Reihenfolge wiederum ergibt sich durch die Anordnung der Jars im Classpath.

Sollte man also bspw. die Metamodellklassen mit Hilfe des Hibernate-Generators erzeugen wollen, unbewusst aber das OpenJPA-Jar vorher im Classpath platzieren, wird der Hibernate-Generator verdeckt. Wird in einem solchen Fall die o. a. Option nicht genutzt, werden keine Metamodellklassen erzeugt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Bitte füllen Sie dieses Feld aus.
Bitte füllen Sie dieses Feld aus.
Bitte gib eine gültige E-Mail-Adresse ein.
Sie müssen den Bedingungen zustimmen, um fortzufahren.

Autor

Diesen Artikel teilen

LinkedIn
Xing

Gibt es noch Fragen?

Fragen beantworten wir sehr gerne! Schreibe uns einfach per Kontaktformular.

Kurse

weitere Blogbeiträge

match 1899824 640
Jakarta EE (Java EE)

CDI 4.0: Events mit BeanManager feuern

CDI Events können mit Hilfe einer Event Source gefeuert werden, z. B. @Inject @Urgent Event<Message> urgentMessageEventSource; ... urgentMessageEventSource.fire(new Message(...)); Im…
IT-Training - GEDOPLAN
Java SE

Checkstyle kann nun auch Java 7!

Mein Flehen wurde erhört: Die Version 5.5 ist verfügbar. Sie kennt auch die neuen Syntaxelemente von Java 7. Dazu passend…
IT-Training - GEDOPLAN
Java SE

Checkstyle mag Java 7 nicht

Ärgerlich, aber derzeit wahr: Checkstyle stolpert über die neuen Sprachfeatures der Version 7. Die Fehlermeldungen treten im Zusammenhang mit dem…

Work Life Balance. Jobs bei Gedoplan

We are looking for you!

Lust bei GEDOPLAN mitzuarbeiten? Wir suchen immer Verstärkung – egal ob Entwickler, Dozent, Trainerberater oder für unser IT-Marketing! Schau doch einfach mal auf unsere Jobseiten! Wir freuen uns auf Dich!

Work Life Balance. Jobs bei Gedoplan

We are looking for you!

Lust bei GEDOPLAN mitzuarbeiten? Wir suchen immer Verstärkung – egal ob Entwickler, Dozent, Trainerberater oder für unser IT-Marketing! Schau doch einfach mal auf unsere Jobseiten! Wir freuen uns auf Dich!