休眠中Set和Collection之间的区别

时间:2009-02-02 18:36:07

标签: java hibernate

在我的hibernate实体对象上为@OneToMany或@ManyToMany属性使用Set或Collection有什么区别?

Hibernate会根据您选择的方式对内容进行不同的映射吗?

5 个答案:

答案 0 :(得分:3)

在hibernate的上下文中,下面是使用Set而不是Collection的场景: -

“从订单到订单时,将订单加入orders.orderLineItems as orderLineItems ORDER BY orders.id DESC“

它返回重复项,因此请使用哈希集删除它们。

查询query = session.getNamedQuery(“OrdersAndLoadLineItems”); Set set = new LinkedHashSet(); set.addAll(query.list());
返回集;

这取自Hibernate FAQ链接http://www.hibernate.org/117.241.html

答案 1 :(得分:2)

如果您查看API Set扩展Collection。根据描述,Set不允许空值。

答案 2 :(得分:0)

Collection是一个接口,无法实例化。 Set也是一个接口。

因此,只要您使用的实例化对象与那些对象兼容,那么您使用的内容并不重要。

通常情况下,你会这样做:

private Set parts = new HashSet();

答案 3 :(得分:0)

集合比集合更通用。 Set是Collection的更具体的子接口。请参阅here

答案 4 :(得分:0)

我不知道区别,但如果您使用Set,您可以在JPA中获取多个行李,但如果您使用List,则无法在查询中获取多个行李。