珍しいことではないと確信しているので、これは非常に簡単な答えかもしれません。同様の質問がいくつかありますが、私の問題を説明しているようには見えません。
車と人の2つのオブジェクトがあります。彼らは多対多の関係にあります。つまり、車は複数の人が所有でき、人は複数の車を所有できます。 Car
怠惰に初期化された:のセットがありDrivers
ます
@ManyToMany(targetEntity=Person.class, fetch=FetchType.LAZY)
private Set<Person> people;
25歳未満の所有者がいるすべての青い車を見つけたい:
Criteria foo = persistenceManager.createCriteria(Car.class, "myCarAlias");
Criteria bar = foo.createCriteria("drivers", "myDriverAlias");
//add restrictions on foo and bar for blue and age, respectively
baz = foo.list();
私の問題は、リストを繰り返してgetDrivers()
各車を呼び出すと、コレクションが初期化され、その車のすべてのドライバーが取得されることです。私.list()
が走ったのは各車の結果を設定していないと思います。
SQL hibernateが生成しているものを手動で実行した場合に期待する結果が返されるので、基準が問題ではないと合理的に確信しています。
なぜこれが発生するのかは理解できますが、各車を繰り返し処理し、各車のドライバーのクエリを実行せずに回避する方法がわかりません。できればそうしないようにしたいと思いますので、アドバイスをいただければ幸いです。
前もって感謝します!