Pregunta ¿Cómo generar el metamodelo JPA 2.0?


En el espíritu de seguridad tipo asociado con el CriteriaQuery JPA 2.0 también tiene una API para apoyar Metamodelo representación de entidades.

¿Alguien está al tanto de una implementación completamente funcional de esta API (para generar el Metamodelo en lugar de crear las clases del metamodelo manualmente)? Sería increíble si alguien también conoce los pasos para configurar esto en Eclipse (supongo que es tan simple como configurar un procesador de anotaciones, pero nunca se sabe).

EDITAR: Acabo de tropezar con Generador de metamodelo JPA 2 de Hibernate . Pero el problema persiste ya que no puedo encontrar enlaces de descarga para el contenedor.

EDICION 2: Ha pasado un tiempo desde que hice esta pregunta, pero pensé que volvería y agregaría un enlace al Proyecto Hibernate JPA Model Generator en SourceForge


76
2018-06-14 13:32


origen


Respuestas:


Sería increíble si alguien también conoce los pasos para configurar esto en Eclipse (supongo que es tan simple como configurar un procesador de anotaciones, pero nunca se sabe)

Sí lo es. Aquí están las implementaciones e instrucciones para las diversas implementaciones de JPA 2.0:

EclipseLink

Hibernar

OpenJPA

DataNucleus


La última implementación de Hibernate está disponible en:

Una implementación más antigua de Hibernate está en:


77
2018-06-14 13:59



REVISADO (marzo / 2014)

Por favor, eche un vistazo a jpa-metamodels-with-maven

Hibernar

Usar Hibernate es lo más recomendado.

(No estoy juzgando ninguna característica / funciones / usabilities / stabilites en esas implementaciones. Y la declaración anterior solo se enfoca en el uso de maven que construí.)

<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 parece requerir un elemento adicional <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 requiere 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>

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

Para los usuarios de Apache Maven,

Seguir una configuración simple parece funcionar. (con el viejo compilador maven-compiler; actualizado.)

<!-- 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>

puedes ejecutarlo con "mvn compiler: compile"

ACTUALIZAR

Tenga en cuenta que este método solo funciona con los viejos compiladores maven-compiler. Verifique la versión en código.


36
2018-06-28 13:27



El soporte JPA 2.0 de Eclipse a través de Dali (que está incluido en "Eclipse IDE para desarrolladores JEE") tiene su propio generador de metamodelos integrado con Eclipse.

  1. Seleccione su proyecto en el Paquete Explorer
  2. Ir Propiedades -> JPA diálogo
  3. Seleccione la carpeta fuente de Metamodelo canónico (JPA 2.0) grupo
  4. Hacer clic Aplicar botón para generar clases de metamodelo en la carpeta de origen seleccionada

enter image description here

Esto debería funcionar en cualquier proveedor de JPA ya que las clases generadas son estándar.

Ver también aquí.


15
2018-06-28 14:06



Para eclipselink, solo la siguiente dependencia es suficiente para generar el metamodelo. Nada más es necesario.

    <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



Para Hibernate como proveedor, que es lo más común en mi humilde opinión:

En el caso de las herramientas de compilación como Gradle, Maven necesita tener Hibernate JPA 2 Metamodel Generator jar en classpath y compilador nivel> = 1.6 que es todo lo que necesita construir el proyecto y el metamodelo se generará automáticamente.

En caso de IDE Eclipse 1. Pase a Proyecto-> Propiedades-> Compilador Java-> Procesamiento de anotaciones y habilítelo. 2. Amplíe el proceso de anotación-> Ruta de fábrica-> Agregar tarro externo agregue Hibernate JPA 2 Metamodel Generator jar revise el tarro recién agregado y diga OK. ¡Limpiar y construir hecho!

Enlace Hibernate JPA 2 Metamodel generador jar enlace de maven repo https://mvnrepository.com/artifact/org.hibernate/hibernate-jpamodelgen


3
2017-07-13 09:35