2

私は2つのクラスを持っています

class House {
    String id
    Long size
    Resident resident
}

class Resident {
    String id
    String name
}

私が欲しいのは居住者のリストですが、ハウスにはいくつかの制限が必要です。サイズ eq > 20 で eq を実行し、結果を 10 で制限します

住人は下院への言及はありません。

私は本当にこれを続ける方法がわかりません。

私はこれを試しました:

Criteria crit = session.createCriteria(House.class);
crit.add(Expression.ge("size", 20));
crit.setMaxResults(10);
crit.addOrder(Order.desc("size"));
return crit.list();

しかし、居住者への接続を取得する方法がわかりません

4

2 に答える 2

3

次のコードを試してください:

Criteria crit = session.createCriteria(House.class);
crit.add(Expression.ge("size", 20));
crit.setMaxResults(10);
crit.addOrder(Order.desc("size"));
crit.setFetchMode("resident", FetchMode.JOIN);
crit.setProjection(Projections.property("resident"));
return crit.list();
于 2012-10-30T09:20:12.920 に答える
2

「居住者にはハウスへの参照がありません」-AFAIK Hibernate Criteriaは、関連付けがない場合、特定のエントリから別のエントリに制限を作成できません。

Criteriaしたがって、 forを作成してそこに sResident.classを追加することはできませんRestriction

あなたが試すことができるのは、 の を作成し、必要CriteriaHouse.classを追加してから、インスタンスを取得するためにRestrictiona を設定することです。ProjectionResident.class

これまでに何を試しましたか?

于 2012-10-30T08:52:55.943 に答える