我希望形成一個查詢,其中關聯的集合受到限制,理想情況下使用Hibernate Criteria或HQL,但我對 感興趣如何在SQL中執行此操作。例如,假設我有一個男孩 類與Kites類的雙向一對多關聯。 我想獲得一個列表,其中的風箏的長度在一個範圍內。限制關聯實體的查詢
問題是,我知道的HQL /標準只給我一個完整(無限制)的風箏套件,如這兩個 示例(HQL是一個猜測)中給出的男孩對象 。也就是說,我得到了有風箏的男孩 在正確的範圍內,但是對於每個這樣的男孩我都會得到全部的風箏,而不是 就是那個範圍內的那些。
select new Boy(name) from Boy b
inner join Kite on Boy.id=Kite.boyId
where b.name = "Huck" and length >= 1;
Criteria crit = session.createCriteria(Boy.class);
crit.add(Restrictions.eq("name", "Huck"))
.createCriteria("kites")
.add(Restrictions.ge("length", new BigDecimal(1.0)));
List list = crit.list();
現在我要得到正確的風箏長度設置的唯一途徑是通過 男孩的列表,併爲每一個重新查詢風箏 在範圍內的人進行迭代。我希望有一些SQL/HQL/Criteria嚮導 知道更好的方法。我更喜歡得到一個Criteria解決方案,因爲我的 真正的「Boy」構造函數有很多參數,並且有便利的 來初始化Boys。
我的底層數據庫是MySQL。不要以爲我對SQL或Hibernate有很多瞭解。謝謝!
謝謝,這是非常好的,讓我思考沿着正確的路線。 – Glenn 2009-07-07 22:37:09