1

上記の要件を達成したい。

私は次のようなクラスを持っています

public class Test{private String id;private List<Items> items;} 

みたいなアイテムクラス

public class Item{private String name; private String state;}

特定の制限グループ内のすべてのアイテムの状態を照会したいと考えています。

まあ言ってみれば。

{Done,Done need to confirm,Reject} のような状態があります。

{Done,Done need to confirm} グループ内のすべてのアイテムの状態を照会したいと考えています。

上記の状態にないアイテムの状態が 1 つある場合、クエリの結果として返されるべきではありません。

このようなことでチェックしています。これが正しく行われているのか、それともやり方なのか知りたいです。

criteria.add(Restrictions.in("item.state", states));

4

1 に答える 1

2

あなたが試したような基準を使用して:

criteria.add(Restrictions.in("item.state", states));

次のエラーが表示されます

org.hibernate.QueryException: could not resolve property: item of: Test

これは、Test クラスに「item」プロパティがないためです。

機能させるには、アイテムのエイリアスを作成し、それを制限で使用する必要があります。

Criteria crit = hibSession.createCriteria(Test.class);
crit.createAlias("items", "item_");
crit.add(Restrictions.in("item_.state", states));
于 2013-03-29T19:41:56.337 に答える