Допустим, у меня есть следующие два класса; Пользователь и местоположение. Я хочу создать DetachedCriteria для запроса таблицы пользователей и вернуть всех пользователей, у которых нет местоположения с именем «xyz».
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
Long id;
@CollectionOfElements
Set<Location> locations;
}
@Entity
public class Location{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
Long id;
@Column
String name;
}
Следующий код вернет всех пользователей, у которых есть местоположение с именем «xyz»:
DetachedCriteria dc = DetachedCriteria.forClass(User.class);
dc.createCriteria("locations")
dc.add(Restrictions.eq("name", "xyz"));
Если я перехожу на Restrictions.ne (), это не сработает, потому что вернут только тех пользователей, у которых на самом деле заданы местоположения. Кроме того, если для пользователя задано несколько местоположений, он будет дублировать этого пользователя снова и снова.
Есть идеи?