Die Erzeugung des statischen Metamodells für JPA-Entities wird vom (normalen) Java-Compiler ab Java 6 automatisch erledigt, wenn ein entsprechender Metamodell-Generator im Classpath ist, z. B. hibernate-jpamodelgen. Ein Maven-Projekt braucht dazu nur die folgende Konfiguration:

<project …>
  …
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <inherited>true</inherited>
        <configuration>
          <generatedSourcesDirectory>
            target/generated-sources/annotations
          </generatedSourcesDirectory>

        </configuration>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <dependency>
      <groupId>javax</groupId>
      <artifactId>javaee-api</artifactId>
      <version>7.0</version>
    </dependency>

    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-jpamodelgen</artifactId>
      <version>1.3.0.Final</version>
      <scope>provided</scope>
      <optional>true</optional>
      <exclusions>
        <exclusion>
          <groupId>org.hibernate.javax.persistence</groupId>
          <artifactId>hibernate-jpa-2.0-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
  </dependencies>
</project>

Statt der Dependency javax:javaee-api würde natürlich eine ausreichen, die nur JPA umfasst.

Mit dieser Projektkonfiguration wird zu einer Entity-Klassen Xyz in target/generated-sources/annotations eine Metamodellklasse namens Xyz_ erzeugt und kompiliert.

Um dieses Projekt auch in Eclipse bearbeiten zu können, muss vor dem Import des Projektes in der Workspace-Einstellung Maven -> Annotation Processing die Option Automatically configure JDT APT aktiviert werden. Diese Einstellung gehört zum Plugin m2e-apt, das seit einiger Zeit Bestandteil von Eclipse mit Maven-Integration ist, also bspw. im JBoss Developer Studio 7, aber auch bei Bedarf aus dem Marketplace nachinstalliert werden kann. Wird das Projekt dann als Maven-Projekt in Eclipse importiert, werden die Projekteigenschaften Java -> Compiler -> Annotation Processing und Java -> Compiler -> Annotation Processing -> Factory Path automatisch gefüllt, sodass auch bei der Bearbeitung durch Eclipse Metamodellklassen generiert werden.

Schreibe einen Kommentar

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