Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 类型安全条件查询,JPA2.0的新功能:路径未知?_Java_Hibernate_Maven_Jpa_Jakarta Ee - Fatal编程技术网

Java 类型安全条件查询,JPA2.0的新功能:路径未知?

Java 类型安全条件查询,JPA2.0的新功能:路径未知?,java,hibernate,maven,jpa,jakarta-ee,Java,Hibernate,Maven,Jpa,Jakarta Ee,在jbdevstudio中启动新的javaee(maven)web应用程序时,已经包含了一些代码,包括一个注册的成员模型。 在MemberRepository类中,有两种方法以这种方式使用条件查询: public Member findByEmail(String email) { CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery<Member> criteria = cb.createQuery(

在jbdevstudio中启动新的javaee(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();
}
公共成员findByEmail(字符串电子邮件){
CriteriaBuilder cb=em.getCriteriaBuilder();
CriteriaQuery criteria=cb.createQuery(Member.class);
根成员=criteria.from(member.class);
//交换条件语句如果要尝试类型安全条件查询,请使用新的
//JPA2.0中的功能
//选择(成员).where(cb.equal(成员.get(成员名称));
标准。选择(成员)。其中(cb.equal(成员获取(“电子邮件”),电子邮件));
返回em.createQuery(criteria).getSingleResult();
}
公共列表findAllOrderedByName(){
CriteriaBuilder cb=em.getCriteriaBuilder();
CriteriaQuery criteria=cb.createQuery(Member.class);
根成员=criteria.from(member.class);
//交换条件语句如果要尝试类型安全条件查询,请使用新的
//JPA2.0中的功能
//criteria.select(member.orderBy)(cb.asc(member.get(member.name));
criteria.select(member.orderBy)(cb.asc(member.get(“name”)));
返回em.createQuery(条件).getResultList();
}
我想使用(例如,试用)建议的类型安全标准查询的代码行,但编译器在
成员
方面存在问题。 我错过了什么

问候
Martin

要在条件查询中使用类,必须首先创建静态元模型类。所有JPA提供商都包含一种方法,他们的文档将告诉您如何做到这一点。此处的链接显示,要在条件查询中使用类,首先必须创建静态元模型类。所有JPA提供商都包含一种方法,他们的文档将告诉您如何做到这一点。此处的链接仅显示一个

非常感谢您快速而有用的回答。效果很好。附加问题:我现在把Member_uu类作为MemberRepository类的内部类(并使类成为静态的)。这有意义吗,还是最好将其放在自己的文件中(以后可能需要在其他地方再次使用(?)。您的JPA提供程序将为您生成类(通常通过注释处理器),因此它将决定它们放在何处。My provider(DataNucleus)将它们与实体类放在同一个包中。非常感谢您快速而有用的回答。效果很好。附加问题:我现在将Member_u类作为MemberRepository类的内部类(并使类成为静态)。这有意义吗?还是将其放在自己的文件中更好(以后可能需要在其他地方(?)。您的JPA提供程序将为您生成类(通常通过注释处理器),因此它将决定将它们放在何处。我的提供程序(DataNucleus)将它们与实体类放在同一个包中。