gpt4 book ai didi

java - hibernate 映射中可以选择哪种集合类型

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:36:48 25 4
gpt4 key购买 nike

我有两个实体,即客户和订单。一个客户有多个订单。我尝试双向一对多和多对一。那么,我可以选择哪个集合对象,即包, map 等。那么,什么基础我可以使用一对多和多对一的双向关系选择集合对象吗?

最佳答案

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

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

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

  • 有序列表,其中顺序未在数据库中具体化
  • 索引列表,其中订单在数据库中具体化

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

@OneToMany(mappedBy="customer")
@OrderBy("number")
public List<Order> getOrders() { return orders; }

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

  @OneToMany(mappedBy="customer")
@OrderColumn(name="orders_index")
public List<Order> getOrders() { return orders; }

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

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

  @OneToMany(mappedBy="customer")
public Set<Order> getOrders() { return orders; }

希望对您有所帮助。

关于java - hibernate 映射中可以选择哪种集合类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7030360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com