Как получить всех сотрудников с именем «Джон Смит» с использованием подхода критериев спящего режима?Запрос критериев гибернации, где значения равны свойствам с полем сбора сущности
@Entity public class Name{ private long id; private String title private String first; private String last; private String suffix; @OneToMany(mappedby = "name") private Set<Employee> employees; }
@Entity public class Employee{ private long id; private int age; private Date dateStarted; private String highestEducationCompleted; @ManyToOne private Name name; }
я попытался следующее и получил в обработке подзапросов в NullPointerException
. Похоже, что спящем двигатель требует проекции подзапросов, которые могут вызвать этот подход не работать для этого случая использования в любом случае:
DetachedCriteria getNames = new DetachedCriteria(Name.class); getNames.add(Restrictions.and(Restrictions.eq("first", "John"), Restrictions.eq("last", "Smith"))); Criteria getEmployees = getSession().createCriteria(Employee.class); getEmployees.add(Subqueries.propertyIn("names", getNames); getEmployees.list();
Что такое лучший способ получить это сделать, используя критерии Hibernate?