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论坛,在那里有人提出了类似的问题。第一个问题对我有效,我认为它更直接地回答了这个问题,因为它使用了标准。