如何在Hibernate中启用或利用“静态元模型”
我有一个类Term.java,它映射到mysql中的一个表中如何在Hibernate中启用或利用“静态元模型”,hibernate,jpa,jboss,jpa-2.0,metamodel,Hibernate,Jpa,Jboss,Jpa 2.0,Metamodel,我有一个类Term.java,它映射到mysql中的一个表中 public List<Term> findAllOrderedByName() { CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery<Term> criteria = cb.createQuery(Term.class); Root<Term> term = criteria.fr
public List<Term> findAllOrderedByName() {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Term> criteria = cb.createQuery(Term.class);
Root<Term> term = criteria.from(Term.class);
criteria.select(term).orderBy(cb.asc(term.get(Term_.name)));
return em.createQuery(criteria).getResultList();
}
我的POM中有此依赖项:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-jpamodelgen</artifactId>
<scope>provided</scope>
</dependency>
容器是JBoss。这里有什么问题吗?谢谢
编辑:
在Eclipse中,单击project->JPA->canonical metamodel JPA2.0并指定源文件夹,我得到了在Eclipse中自动生成的类。这是正确的方法吗
@Generated(value="Dali", date="2016-02-29T14:56:11.460-0800")
@StaticMetamodel(Term.class)
public class Term_ {
public static volatile SingularAttribute<Term, Integer> id;
public static volatile SingularAttribute<Term, String> name;
public static volatile ListAttribute<Term, Context> contexts;
}
请发布完整的pom.xml可能是发布经过计算、有效的pom的一个好主意,因为它看不出您的构建过程有什么问题。另外,请说明您是否使用像Eclipse这样的IDE,因为maven Eclipse集成是一个全新的领域,除了maven本身之外,还可能出错。我右键单击我的project->property->JPA,并在Canonical metamodelJPA2.0下指定源文件夹src/main/java,然后自动生成一个类术语。应该是Eclipse中生成motamodel类的方法吗?请参阅更新。它们是在哪里生成的?我猜它们最终位于不同的源文件夹中,然后是您的src/main/java源文件夹,someth类似于${project.build.directory}/generated sources/annotations。该文件夹最终会添加到Eclipse中的源文件夹吗?奇怪!我在两个包中有三个实体类,我发现${project.build.directory}中生成了一个成员/生成的源代码/注释,但我在生成的源代码/注释中看不到其他两个。我不知道它们在哪里,包括术语u。但是,所有3个都与原始类、成员、上下文和术语位于同一个包中。请尝试为您的项目执行完整的构建项目->清理…以便删除所有编译的类并执行Eclipse将对您的源代码进行完整编译。您可能只对启用注释处理后实际更改的源文件进行了增量编译,因此尚未生成所有元模型源文件。