2016-08-13 1 views
0

Как получить всех сотрудников с именем «Джон Смит» с использованием подхода критериев спящего режима?Запрос критериев гибернации, где значения равны свойствам с полем сбора сущности

@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?

ответ

0

Люди спячки знают об этой проблеме по крайней мере с 2005 года и в значительной степени игнорируют ее. См. Первоначальный отчет об ошибке здесь: https://hibernate.atlassian.net/browse/HHH-993

Смежные вопросы