[英]Ordering by number of relationships in Hibernate
我有兩個具有一對多關系的模型。 可以說,它是一種產品的拍賣,並且該產品可以有很多出價。
基本上,我想做的是撤出所有產品,但要根據收到的出價來訂購它們。
到目前為止,我得到的是:
"select p from Product as p join p.bids b where b.product=p order by COUNT(b) ASC";
但是,這似乎只會拉出一個帶有出價的產品。 如果我想在休眠查詢期間訂購,我通常可以做類似的事情
"select p from Product as p ORDER BY p.name";
我以為我可以按照
"select p from Product as p ORDER BY COUNT(p.bids)";
但是我不能。
有沒有人對這樣的問題有任何建議或經驗?
謝謝,-gearoid
您可以在產品上放置一個名為numberOfBids的屬性,然后像這樣映射它
<property name="numberOfBids">
<formula>
(SELECT (count(bids.id) WHERE bids.product_id = product_id)))
</formula>
</property>
現在,此方法的唯一問題是公式標記中的查詢必須使用直接SQL。 因此它是特定於數據庫的。 在此查詢中,bids是數據庫中bids表的別名,product_id是產品中包含產品ID的字段的名稱。 另外,還必須向產品數據對象添加long類型的屬性。
完成此操作后,現在即可進行查詢
select p from Product as p ORDER BY COUNT(p.numberOfBids)
應該像魅力一樣工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.