假设我有以下两个课程;用户和位置。我想创建一个 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(),那将不起作用,因为它只会返回实际设置了位置的用户。此外,如果为用户设置了一堆位置,它将一遍又一遍地复制该用户。
有任何想法吗?