2009-02-02 54 views
1

在我的hibernate實體對象上使用@OneToMany或@ManyToMany屬性的集合或集合有什麼區別?休眠時設置和集合的區別

根據你選擇哪一種,Hibernate是否有不同的映射方式?

+0

你可以使用收集?我認爲收集是通用術語,但你必須在Bag,Set,SortedSet等之間做出決定。 – Thorsten 2009-02-02 18:44:47

+0

看着我在想的答案和方向..你在哪裏使用集合或集合..在映射XML或在您的Java代碼來檢索查詢的結果? – Thorsten 2009-02-02 18:59:50

回答

2

如果你看看APISet延伸Collection。根據描述,Set不允許空值。

0

集合是一個接口,不能實例化。 Set也是一個接口。

因此,只要您使用的實例化對象與這些對象兼容,就無所謂了。

所以通常情況下,你會做這樣的事情:

private Set parts = new HashSet(); 
0

集合是不止是一組更普遍。集合是集合的更具體的子接口。見here

3

在休眠的情況下,下面是一個你會使用SET而不是集合的場景: -

「從訂單的訂單留給抓取連接orders.orderLineItems作爲 orderLineItems ORDER BY orders.id DESC」

它返回重複項,所以使用哈希集來刪除它們。

Query query = session.getNamedQuery(「OrdersAndLoadLineItems」); Set set = new LinkedHashSet(); set.addAll(query.list());
return set;

這是從休眠FAQ鏈接採取的是http://www.hibernate.org/117.241.html

0

我不知道其中的差別,但如果你使用SET可以獲取在JPA多個包,但如果你使用列表,例如,你不能取查詢中有多個行李。