Критерии гибернации / Запрос свойств объекта
У меня есть класс AppUser
;
class AppUser {
private String firstName;
private String lastName;
//-- getters and setters
}
У меня тоже есть другой класс Student
;
class Student {
private AppUser appUser;
private Date dateOfBirth;
//-- getters and setters
}
Как бы я искал Студента John Doe
Имя Фамилия Джон, фамилия Доу?
Если бы это была дата рождения, я бы создал Criteria
и добавить ограничение равенства (Restristions.eq
) на дату. Как бы я сделал это для lastName и firstName в объекте AppUser?
2 ответа
Решение
Запрос:
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();