2010-11-19 82 views
4

類別AB有一對多的關係。因此,A有一個屬性collectionOfBJPA:使用count直接將集合大小映射到屬性?

有沒有什麼辦法可以將「count B」映射​​到A中的單個屬性?

目的是提供一個快捷方式來檢索關聯的B的數量,而無需加載整個集合。有時候我需要的是計數,即收集尺寸。我知道我可以發出一個針對實體管理器的查詢,完全是這樣。但是,由JPA提供者通過註釋來完成它當然更可取。

+1

我不知道有什麼辦法做到這一點。你必須寫一個COUNT查詢。 – 2010-11-19 23:58:37

+0

剛剛意識到,如果有人願意放棄JPA,可能會使用Hibernate公式(http://docs.jboss.org/hibernate/core/3.5/reference/en/html/mapping.html#mapping-column)合規性。 – 2011-05-21 05:05:16

回答

0

據我所知,這是不可能的。 正如你已經建議的那樣,運行一個查詢來實現這一點,除非你有成千上萬的B對象,並且你仍然可以緩存它並且每x分鐘更新一次,否則它不應該很貴。

更容易出錯的解決方案是使用這些類型的數字來統計實體。

+0

編寫查詢時遇到的問題是我們實體的使用方式。我們使用Dozer自動將它們映射到各自的DTO(傳回到表示層)。 – 2010-11-20 07:39:05

+0

所以,當ADto有一個字段編號的時候,推土機會調用A#getNumberOfBs()。通常,根據A中的JPA註釋,如果尚未存在於A中,則數據將自動從數據存儲中加載,即,延遲。由於我們經常使用分區DTO,例如ADto和ASummaryDto,因此DTO有時需要一組Bs,有時只需要numberOfBs。希望我能夠以一種可理解的方式解釋這一點...... – 2010-11-20 07:45:25