1

要素 B のリストを持つクラス A があります。各 B にはさらにオブジェクト C があります。リストに異なる C インスタンスを持つ少なくとも 2 つの B インスタンスがある A のインスタンスを見つける必要があります。

public class A {
   long id;
   List<B> elements;
}

public class B {
    long id;
    C object;
}

public class C {
    long id;
}

私はすでにさまざまなこと、直接比較、2 つのエイリアス DetachedCriteria の作成を試しましたが、0 行を取得するか、少なくとも 1 つの B があるすべての行を取得するか、例外を取得します。私が望むものと一致する1行を取得することはありません。

私はここで怒っています。これをどのように機能させるかについて誰か考えがありますか?

4

1 に答える 1

0

いつものように、私が最終的に問題を放棄して質問として投稿すると、後で解決策を見つけます。

Criteria crit = session.createCriteria(A.class, "a");

DetachedCriteria cCount = DetachedCriteria.forClass(A.class, "a2");

cCount.createAlias("a2.elements", "elements2");
cCount.add(Restrictions.eqProperty("a2.id", "a.id");
cCount.setProjection(Projections.countDistinct("elements2.object.id");

crit.add(Subqueries.lt(1L, areaCount);

return (List<A>) crit.list();
于 2013-02-18T09:11:45.827 に答える