Будьте в спящем режиме Критерии / Запрос на свойствах объектов

У меня есть класс 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, firstName John, lastName Doe?

Это было свойство даты рождения, я создал бы a Criteria и добавьте Ограничение равенства (Restristions.eq) в день. Как я сделал бы это для lastName и firstName в объекте AppUser?

8
задан n002213f 28 December 2009 в 12:48
поделиться

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");

Для использования Критериев проверьте этот поток

Также посмотрите на эту страницу из документов периода спячки

8
ответ дан 5 December 2019 в 08:52
поделиться

Возможно, вам понадобится добавить псевдоним... что-то вроде:

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();
11
ответ дан 5 December 2019 в 08:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: