Java 对象属性的休眠条件/查询

Java 对象属性的休眠条件/查询,java,hibernate,criteria,Java,Hibernate,Criteria,我有一个类AppUser class AppUser { private String firstName; private String lastName; //-- getters and setters } 我还有另一个班学生 class Student { private AppUser appUser; private Date dateOfBirth; //-- getters and setters } 如何搜索学生约翰·多伊,姓约翰,姓多伊

我有一个类
AppUser

class AppUser {
   private String firstName;
   private String lastName;
   //-- getters and setters
}
我还有另一个班
学生

class Student {
   private AppUser appUser;
   private Date dateOfBirth;
   //-- getters and setters
}
如何搜索学生
约翰·多伊
,姓约翰,姓多伊

如果是出生日期,我会创建一个
标准
,并在日期上添加一个平等限制(
restrictions.eq
)。对于AppUser对象中的lastName和firstName,我将如何执行此操作?

查询:

Query q = session.createQuery(
    "SELECT s from Student s WHERE s.appUser.firstName=:firstName AND s.appUser.lastName=:lastName");
q.setParameter("firstName", "John");
q.setParameter("lastName", "Doe");
要使用标准,请选中


还可以查看一下

您可能需要添加别名…类似于:

List students = session.createCriteria(Student.class).createAlias("appUser", "user").add(Restrictions.eq("user.firstName", firstName)).list();
没有别名:

List students = session.createCriteria(Student.class).add(Restrictions.eq("appUser.firstName", firstName)).list();

谢谢你的回答,但是如果不使用
查询
,而不是使用
标准
限制
,有可能实现这一点吗?我已经尝试了
appUser.firstName
,但我得到了一个错误,未知属性我更新了我的答案,将其指向hibernate论坛,在那里有人提出了类似的问题。第一个问题对我有效,我认为它更直接地回答了这个问题,因为它使用了标准。