在我的hibernate实体对象上为@OneToMany或@ManyToMany属性使用Set或Collection有什么区别?
Hibernate会根据您选择的方式对内容进行不同的映射吗?
答案 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,则无法在查询中获取多个行李。