Frage Wie generiere ich ein JPA 2.0 Metamodell?


Im Geiste der Typsicherheit verbunden mit der Kriterienabfrage JPA 2.0 unterstützt auch eine API Metamodell Darstellung von Entitäten.

Kennt jemand eine voll funktionsfähige Implementierung dieser API (um das Metamodell im Gegensatz zur manuellen Erstellung der Metamodellklassen zu generieren)? Es wäre toll, wenn jemand auch die Schritte für die Einrichtung in Eclipse kennt (ich nehme an, es ist so einfach wie das Einrichten eines Annotationsprozessors, aber man weiß es nie).

BEARBEITEN: Bin einfach hinüber gestolpert Hibernate JPA 2 Metamodell Generator . Aber das Problem bleibt, da ich keine Download-Links für das Glas finden kann.

EDIT 2: Es ist schon eine Weile her, dass ich diese Frage gestellt habe, aber ich dachte, ich würde zurückkommen und einen Link zum Hibernate JPA Model Generator Projekt auf SourceForge


76
2018-06-14 13:32


Ursprung


Antworten:


Es wäre toll, wenn jemand auch die Schritte für die Einrichtung in Eclipse kennt (ich nehme an, es ist so einfach wie das Einrichten eines Annotationsprozessors, aber man weiß nie)

Ja, so ist es. Hier sind die Implementierungen und Anweisungen für die verschiedenen JPA 2.0-Implementierungen:

EclipseLink

Überwintern

OpenJPA

Datenkern


Die neueste Hibernate-Implementierung ist verfügbar unter:

Eine ältere Hibernate-Implementierung befindet sich unter:


77
2018-06-14 13:59



ÜBERARBEITET (März / 2014)

Bitte werfen Sie einen Blick auf jpa- metamodels-mit-maven

Überwintern

Die Verwendung von Hibernate wird am meisten empfohlen.

(Ich bewerte keine Merkmale / Funktionen / Verwendbarkeiten / Stabilitäten bei diesen Implementierungen. Und die obige Aussage konzentriert sich nur auf die Verwendung von Maven, die ich konstruiert habe.)

<plugin>
  <groupId>org.bsc.maven</groupId>
  <artifactId>maven-processor-plugin</artifactId>
  <executions>
    <execution>
      <id>process</id>
      <goals>
        <goal>process</goal>
      </goals>
      <phase>generate-sources</phase>
      <configuration>
        <processors>
          <processor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor</processor>
        </processors>
      </configuration>
    </execution>
  </executions>
  <dependencies>
    <dependency>        
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-jpamodelgen</artifactId>
      <version>4.3.4.Final</version>
    </dependency>
  </dependencies>
</plugin>

OpenJPA

OpenJPA scheint zusätzliche Elemente zu benötigen <openjpa.metamodel>true<openjpa.metamodel>.

<plugin>
  <groupId>org.bsc.maven</groupId>
  <artifactId>maven-processor-plugin</artifactId>
  <executions>
    <execution>
      <id>process</id>
      <goals>
        <goal>process</goal>
      </goals>
      <phase>generate-sources</phase>
      <configuration>
        <processors>
            <processor>org.apache.openjpa.persistence.meta.AnnotationProcessor6</processor>
        </processors>
        <optionMap>
          <openjpa.metamodel>true</openjpa.metamodel>
        </optionMap>
      </configuration>
    </execution>
  </executions>
  <dependencies>
    <dependency>
      <groupId>org.apache.openjpa</groupId>
      <artifactId>openjpa</artifactId>
      <version>2.3.0</version>
    </dependency>
  </dependencies>
</plugin>

EclipseLink

EclipseLink benötigt persistence.xml.

<plugin>
  <groupId>org.bsc.maven</groupId>
  <artifactId>maven-processor-plugin</artifactId>
  <executions>
    <execution>
      <id>process</id>
      <goals>
        <goal>process</goal>
      </goals>
      <phase>generate-sources</phase>
      <configuration>
        <processors>
          <processor>org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor</processor>
        </processors>
      </configuration>
    </execution>
  </executions>
  <dependencies>
    <dependency>
      <groupId>org.eclipse.persistence</groupId>
      <artifactId>org.eclipse.persistence.jpa.modelgen.processor</artifactId>
      <version>2.5.1</version>
    </dependency>
  </dependencies>
</plugin>

=========================================

Für Apache Maven Benutzer,

Nach einfacher Konfiguration scheint Arbeit. (mit altem Maven-Compiler-Plugin; aktualisiert.)

<!-- This method doesn't work with newest maven-compiler-plugin -->
<!-- But if it's ok to work with old maven-compiler-plugin -->
<!-- This is the best method -->
<!-- There is no other required configurations -->
<!-- We don't even require to config any processor names -->

<project>
  <build>

    <extensions>
      <extension>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-jpamodelgen</artifactId>
        <version>1.3.0.Final</version>
      </extension>
    </extensions>

    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.5.1</version> <!-- this is critical -->
        <configuration>
          <source>1.6</source>
          <target>1.6</target>
        </configuration>
      </plugin>

    </plugins>
  </build>
</project>

Sie können es mit "mvn compiler: compile" ausführen

AKTUALISIEREN

Beachten Sie, dass diese Methode nur mit dem alten Maven-Compiler-Plugin funktioniert. Überprüfen Sie die Version im Code.


36
2018-06-28 13:27



Eclipse JPA 2.0-Unterstützung durch Dali (die in "Eclipse IDE für JEE-Entwickler" enthalten ist) hat einen eigenen Metamodell-Generator in Eclipse integriert.

  1. Wählen Sie Ihr Projekt in der Paket-Explorer
  2. Gehe zu Eigenschaften -> JPA Dialog
  3. Wählen Sie den Quellordner aus Kanonisches Metamodell (JPA 2.0) Gruppe
  4. Klicken Sich bewerben Schaltfläche zum Generieren von Metamodellklassen im ausgewählten Quellordner

enter image description here

Dies sollte bei jedem JPA-Provider funktionieren, da die generierten Klassen Standard sind.

Siehe auch Hier.


15
2018-06-28 14:06



Für eclipselink reicht nur die folgende Abhängigkeit aus, um ein Metamodell zu generieren. Nichts anderes wird benötigt.

    <dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>org.eclipse.persistence.jpa.modelgen.processor</artifactId>
        <version>2.5.1</version>
        <scope>provided</scope>
    </dependency>

6
2018-06-09 11:47



Für Hibernate als Provider, der am häufigsten im IMHO ist:

Im Fall von Build-Tools wie Gradle, Maven benötigen Sie den Hibernate JPA 2 Metamodel Generator jar im Klassenpfad und Compiler Level> = 1.6 das ist alles was Sie brauchen um das Projekt zu erstellen und das Metamodell wird automatisch generiert.

Im Falle von IDE Eclipse 1. Gehe zu Projekt-> Eigenschaften-> Java Compiler-> Annotation Processing und aktiviere es. 2. Erweitern Sie Annotation Processing-> Factory Path-> Add External Jar hinzufügen Hibernate JPA 2 Metamodell Generator Jar überprüfen Sie das neu hinzugefügte Glas und sagen Sie OK. Reinigen und Bauen erledigt!

Link Hibernate JPA 2 Metamodell Generator Jar Link von Maven Repo https://mvnrepository.com/artifact/org.hibernate/hibernate-jpamodelgen


3
2017-07-13 09:35