は今、私は唯一の唯一のB POJOのHibernateのクライテリアAPIフィルタ収集proporty
where "b.name" == 'abc'
を持つフィルタbListプロパティを持つPOJOのを得るように、Hibrnate基準のAPIを使用してクエリを作成したいです
は今、私は唯一の唯一のB POJOのHibernateのクライテリアAPIフィルタ収集proporty
where "b.name" == 'abc'
を持つフィルタbListプロパティを持つPOJOのを得るように、Hibrnate基準のAPIを使用してクエリを作成したいです
これは非常に危険なことです.Hibernateでサポートされていますが、ロードするエンティティはデータベースに格納されているものの現実を反映していないため、JPAではJPAではありません。 Bsのリストを変更した場合、HibernateはAにbalongするが、クエリによってロードされていないすべてのBsを削除するかもしれません。これは、フェッチモードで参加するシンプルなインナーである、と述べた
:
Criteria c = session.createCriteria(A.class, "a");
c.createAlias("a.b", "b");
c.add(Restrictions.eq("b.name", "abc");
c.setFetchMode("a.b", FetchMode.JOIN);
私は上記のコードを試してみたし、Bコレクションをフィルタリングしないように私には思えます。私は最終的にクラスで
@FilterDef(name="BFilter",
parameters= @ParamDef(name="bName", type="string"))
Public class A{
@Filter(
name = "BFilter",
condition="name = :bName"
)
private List<B> bList;
}
を追加のフィルタを追加しましたし、私はそれはDBに2回照会し、望ましいことではないかもしれない明確なクラス
を取得するためにsetResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
を使用して何
。他の選択肢がある場合は私を修正してください。
私たちが正しく読むだけでいいのですか? – digz6666
不正なデータをユーザに提示しない限り、この不正確なデータに基づいて悲惨な判断を下します。 –