0

Hibernate Criteria ベースのクエリでは、サブセレクトに基準を追加できますか?

具体的には、開発者は次のコードを持っています。

 criteria.setFetchMode("user", FetchMode.JOIN).add(
                Restrictions.eq("company.id", companyId));

彼らの意図は次のようなものです。

select a.* from tableA a where a.user in 
        (select b.user from tableB b where b.companyId = 'companyId')

IE 'このテーブルから、companyId = 'companyId' のユーザーのセットに含まれるすべてのレコードを選択します (詳細は別のテーブルを参照)。

ただし、上記の Criteria ベースのステートメントは意図したとおりに機能しません。setFetchMode は呼び出されたのと同じ基準を返し、add ステートメントは company.id = companyId 句を全体的な Criteria (つまり tableA) に追加していると思います。

この 'add' ステートメントは、fetchmode が後で作用する Criteria ではなく、FetchMode (つまり、サブセレクト) に適用されることを意味していました。

休止状態の基準ステートメントを経験していないので、これが可能かどうかわかりませんか?

4

1 に答える 1

1

エイリアスを使用して、やろうとしていることを達成できます。

 criteria.setFetchMode("user", FetchMode.JOIN).createAlias("company","c").add(
                Restrictions.eq("c.id", companyId));

詳細については、休止状態のドキュメントのこのセクションをご覧ください

于 2012-04-23T16:01:36.457 に答える