如何生成JPA 2.0元模型?
本着与CriteriaQuery相关的types安全的精神,JPA 2.0还有一个API来支持实体的元模型表示。
是否有人知道这个API的全function实现(生成元模型,而不是手动创build元模型类)? 如果有人知道在Eclipse中设置这个步骤(我认为这与设置注释处理器一样简单,但你永远不知道),这将是非常棒的。
编辑:只是偶然发现Hibernate JPA 2元模型生成器 。 但问题仍然存在,因为我找不到任何jar的下载链接。
编辑2:自从我问这个问题以来已经过去了,但是我想我会回来并添加一个链接到SourceForge上的Hibernate JPA Model Generator项目
如果有人知道在Eclipse中设置这个步骤的话,这将是非常棒的(我认为这与设置注释处理器一样简单,但你永远不知道)
是的。 以下是各种JPA 2.0实现的实现和说明:
的EclipseLink
org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor
过冬
-
org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor
- http://in.relation.to/2009/11/09/hibernate-static-metamodel-generator-annotation-processor
OpenJPA的
-
org.apache.openjpa.persistence.meta.AnnotationProcessor6
- http://openjpa.apache.org/builds/2.4.1/apache-openjpa/docs/ch13s04.html
DataNucleus将
-
org.datanucleus.jpa.JPACriteriaProcessor
- http://www.datanucleus.org/products/accessplatform_2_1/jpa/jpql_criteria_metamodel.html
对于Hibernate,实现由hibernate-jpamodelgen-1.0.0.Final.jar
修订(2014年3月)
请看jpa-metamodels-with-maven
过冬
最推荐使用Hibernate。
( 我没有判断这些实现的任何特性/function/可用性/稳定性,上面的语句只关注我构build的maven用法。 )
<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似乎需要额外的元素<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需要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>
========================================
对于Apache Maven用户,
以下简单的configuration似乎工作。 ( 用老的maven-compiler-plugin;更新。 )
<!-- 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>
你可以运行“mvn compiler:compile”
UPDATE
请注意,这种方法只适用于那些老的maven-compiler-plugin。 检查代码中的版本。
Eclipse的JPA 2.0支持通过Dali(包含在“Eclipse IDE for JEE Developers”中)包含了自己的与Eclipse集成的元模型生成器。
- 在包资源pipe理器中select您的项目
- 转到属性 – > JPA对话框
- 从Canonical元模型(JPA 2.0)组中select源文件夹
- 单击“ 应用”button,在选定的源文件夹中生成元模型类
这应该适用于任何JPA提供者,因为生成的类是标准的。
另见这里 。
对于eclipselink,只有以下依赖性足以生成元模型。 没有别的是必要的。
<dependency> <groupId>org.eclipse.persistence</groupId> <artifactId>org.eclipse.persistence.jpa.modelgen.processor</artifactId> <version>2.5.1</version> <scope>provided</scope> </dependency>
对于hibernate作为提供者是最常见的恕我直言:
在Gradle,Maven等构build工具的情况下,您需要在类path和编译器级别> = 1.6中安装Hibernate JPA 2元模型生成器jar,您只需构build项目并自动生成元模型即可。
在IDE Eclipse 1. goto Project-> Properties-> Java Compiler-> Annotation Processing的情况下启用它。 2.展开Annotation Processing-> Factory Path-> Add External Jar添加Hibernate JPA 2 Metamodel Generator jar检查新添加的jar并说OK。 清洁和build立完成!
链接hibernateJPA 2元模型生成器jar链接从maven回购https://mvnrepository.com/artifact/org.hibernate/hibernate-jpamodelgen