对象属性的Hibernate Criteria/Query

n00*_*13f 8 java hibernate criteria

我上课了AppUser;

class AppUser {
   private String firstName;
   private String lastName;
   //-- getters and setters
}
Run Code Online (Sandbox Code Playgroud)

我还有另一堂课Student;

class Student {
   private AppUser appUser;
   private Date dateOfBirth;
   //-- getters and setters
}
Run Code Online (Sandbox Code Playgroud)

我如何搜索学生John Doe,firstName John,lastName Doe?

如果它是出生日期的属性,我会创建一个CriteriaRestristions.eq在日期上添加一个相等的限制().我如何为AppUser对象中的lastName和firstName执行此操作?

Dro*_*roo 11

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

List students = session.createCriteria(Student.class).createAlias("appUser", "user").add(Restrictions.eq("user.firstName", firstName)).list();
Run Code Online (Sandbox Code Playgroud)

没有别名:

List students = session.createCriteria(Student.class).add(Restrictions.eq("appUser.firstName", firstName)).list();
Run Code Online (Sandbox Code Playgroud)


Boz*_*zho 8

查询:

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");
Run Code Online (Sandbox Code Playgroud)

要使用Criteria,请检查此主题

另请参阅hibernate docs中的这个页面