Comment générer un métamodèle JPA 2.0?

dans l'esprit de la sécurité de type associé à la CriteriaQuery JPA 2.0 a également un API pour soutenir Metamodel représentation des entités.

est-ce que quelqu'un est au courant d'une implémentation entièrement fonctionnelle de cette API (générer le métamodèle au lieu de créer les classes de métamodèle manuellement)? Ce serait génial si quelqu'un connaît aussi les étapes pour configurer ceci dans Eclipse (je suppose que c'est aussi simple que le réglage un processeur d'annotation, mais on ne sait jamais).

EDIT: Je viens de tomber sur générateur de métamodèle Hibernate JPA 2 . Mais le problème demeure puisque je ne trouve aucun lien de téléchargement pour le jar.

EDIT 2: Un certain temps s'est écoulé depuis que j'ai posé cette question, mais j'ai pensé revenir et Ajouter un lien vers le Hibernate JPA Model Generator project on SourceForge

78
demandé sur Mark 2010-06-14 17:32:57

5 réponses

ce serait génial si quelqu'un connaît aussi les étapes pour configurer ceci dans Eclipse (je suppose que c'est aussi simple que configurer un processeur d'annotation, mais on ne sait jamais)

Oui. Voici les implémentations et les instructions pour les différentes implémentations JPA 2.0:

EclipseLink

hibernation

OpenJPA

Datanucléus


la dernière mise en œuvre D'hibernation est disponible à:

Une ancienne Hibernate de mise en œuvre est:

79
répondu Pascal Thivent 2017-11-20 18:04:00

révisé (mars / 2014)

s'il vous Plaît prendre un coup d'oeil à jpa-les méta-modèles-avec-maven

hibernation

L'hibernation est la méthode la plus recommandée.

( Je ne juge pas les fonctionnalités/fonctions/usabilités/stabilités sur ces implémentations. Et la déclaration ci-dessus est seulement concentrée dans l'usage maven que j'ai construit. )

<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 semble nécessiter plus d'élément <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 exige 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>

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

Pour Apache Maven utilisateurs,

suivant une configuration simple semble efficace. ( avec de vieux maven-compiler-plugin; mis à jour. )

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

vous pouvez l'exécuter avec" compilateur mvn:compiler "

mise à JOUR

notez que cette méthode ne fonctionne qu'avec les anciens Maven-compiler-plugin. Vérifiez la version en code.

36
répondu Jin Kwon 2015-06-02 07:23:35
Le support JPA 2.0 de

D'Eclipse via Dali (inclus dans" Eclipse IDE for JEE Developers") dispose de son propre générateur metamodel intégré à Eclipse.

  1. Sélectionnez votre projet dans le Package Explorer
  2. Aller à Propriétés -> JPA dialogue
  3. sélectionnez le dossier source du groupe métamodèle canonique (JPA 2.0)
  4. , Cliquez sur Appliquer bouton pour générer des méta-modèle des classes dans le dossier source sélectionné

enter image description here

cela devrait fonctionner sur n'importe quel fournisseur JPA puisque les classes générées sont standard.

Voir aussi ici .

16
répondu James 2015-04-23 11:09:30

pour eclipselink, seule la dépendance suivante est suffisante pour générer metamodel. Rien d'autre n'est nécessaire.

    <dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>org.eclipse.persistence.jpa.modelgen.processor</artifactId>
        <version>2.5.1</version>
        <scope>provided</scope>
    </dependency>
6
répondu Sorter 2014-06-09 11:47:46

Pour Hiberner comme fournisseur qui est le plus commun, à mon humble avis:

dans le cas de construire des outils comme Gradle, Maven vous devez avoir Hibernate JPA 2 Metamodel générateur pot dans la classpath et niveau de compilateur>=1,6 c'est tout ce dont vous avez besoin construire le projet et metamodel sera généré automatiquement.

en cas D'éclipse D'IDE 1. goto Projet->Propriétés->Compilateur Java->Annotation de Traitement et de l'activer. 2. Étendre Le Traitement Des Annotations - > Usine Chemin - > Ajouter un bocal externe Ajouter un pot de métamodèle JPA 2 hiberné vérifier le pot nouvellement ajouté et dire OK. Nettoyer et construire fait!

Lien Hibernate JPA 2 Générateur de Méta-modèle jar lien de repo maven https://mvnrepository.com/artifact/org.hibernate/hibernate-jpamodelgen

3
répondu SandeepGodara 2016-07-13 09:35:51