簡體   English   中英

在Hibernate中按關系數排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM