次の2つのクラスがあるとしましょう。ユーザーと場所。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"));
制限.ne()に変更すると、実際に場所が設定されているユーザーのみが返されるため、機能しません。また、ユーザーに多数の場所が設定されている場合、そのユーザーは何度も複製されます。
何か案は?