类型安全标准查询,JPA 2.0的新功能:路径未知?

时间:2016-03-24 13:50:04

标签: java hibernate maven jpa java-ee

在jbdevstudio中启动新的Java EE(maven)Web应用程序时,已经包含一些代码,包括具有注册的成员模型。 在MemberRepository类中,有两种方法使用条件查询:

public Member findByEmail(String email) {
    CriteriaBuilder cb = em.getCriteriaBuilder();
    CriteriaQuery<Member> criteria = cb.createQuery(Member.class);
    Root<Member> member = criteria.from(Member.class);
    // Swap criteria statements if you would like to try out type-safe criteria queries, a new
    // feature in JPA 2.0
    // criteria.select(member).where(cb.equal(member.get(Member_.name), email));
    criteria.select(member).where(cb.equal(member.get("email"), email));
    return em.createQuery(criteria).getSingleResult();
}

public List<Member> findAllOrderedByName() {
    CriteriaBuilder cb = em.getCriteriaBuilder();
    CriteriaQuery<Member> criteria = cb.createQuery(Member.class);
    Root<Member> member = criteria.from(Member.class);
    // Swap criteria statements if you would like to try out type-safe criteria queries, a new
    // feature in JPA 2.0
    // criteria.select(member).orderBy(cb.asc(member.get(Member_.name)));
    criteria.select(member).orderBy(cb.asc(member.get("name")));
    return em.createQuery(criteria).getResultList();
}

我想使用(例如试用)建议的类型安全标准查询的代码行,但编译器遇到Member_的问题。 我在这里缺少什么?

问候 马丁

1 个答案:

答案 0 :(得分:4)

要在Criteria查询中使用JPA Static Metamodel类,您必须首先创建静态元模型类。所有JPA提供商都提供了一种方法,他们的文档会告诉您如何完成。此处的链接显示了一个