這可能是一個超級簡單的答案,因爲我確信它並不少見。我看到一些類似的問題,但似乎沒有描述我的問題。過濾器懶惰初始化Hibernate集合
我有兩個對象:一輛車和一個人。他們處於多對多的關係中,即一輛車可以擁有多個人,一個人可以擁有多輛車。 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休眠正在生成,所以我相當確定這個標準不是問題。
我可以理解爲什麼發生這種情況,但我不知道如何繞過它而無需遍歷每輛車並在每個車上運行查詢。如果可能,我想避免這樣做,並希望得到任何建議。
提前致謝!
太棒了,謝謝。你提到的第一個案例是我想要的。 – 2010-10-06 18:32:34