2009-02-02 44 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多个包,但如果你使用列表,例如,你不能取查询中有多个行李。