首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在hibernate中映射时可以选择哪种集合类型

在hibernate中映射时可以选择哪种集合类型
EN

Stack Overflow用户
提问于 2011-08-12 01:36:59
回答 1查看 625关注 0票数 3

我有两个实体,客户和订单。一个客户有多个订单。我尝试双向一对多和多到one.So,我可以选择哪个收集对象,即包,映射etc.So,使用一对多和多对一双向关系,我可以根据什么选择收集对象?

EN

回答 1

Stack Overflow用户

发布于 2011-08-12 02:40:59

如果每个订单都是唯一的,并且客户不能在同一集合中拥有两次相同的订单,则使用Set,否则使用List

首先,请记住必须覆盖每个类的equals()和hashCode()函数:

使用List时,您可以用不同的方式映射它:

未在数据库列表中实现顺序的数据库有序列表,在数据库中实现顺序的

  • 有序列表

有序列表的实现方式如下:

代码语言:javascript
运行
复制
@OneToMany(mappedBy="customer")
   @OrderBy("number")
   public List<Order> getOrders() { return orders; }

索引列表以以下方式映射:

代码语言:javascript
运行
复制
  @OneToMany(mappedBy="customer")
   @OrderColumn(name="orders_index")
   public List<Order> getOrders() { return orders; }

要将索引值存储在专用列中,请在属性上使用@javax.persistence.OrderColumn批注。这个注释描述了列名和保持索引值的列的属性。此列驻留在包含关联外键的表中。如果未指定列名,则默认为引用属性的名称,后跟下划线,然后是顺序(在下面的示例中,它将是orders_ORDER)。

如果你想使用Set<Order>,这很简单:

代码语言:javascript
运行
复制
  @OneToMany(mappedBy="customer")
  public Set<Order> getOrders() { return orders; }

希望能有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7030360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档