簡體   English   中英

hibernate映射中可以選擇哪種集合類型

[英]Which collection type can choose in mapping in hibernate

我有兩個實體,即客戶和訂單。一個客戶有多個訂單。我嘗試雙向一對多和多對一。所以,我可以選擇哪個集合 object 即,包,map 等。那么,我可以選擇什么基礎集合 object 使用一對多和多對一的雙向關系?

如果每個訂單都是唯一的,並且客戶不能在同一個集合中兩次擁有相同的訂單,則使用 Set 否則使用 List

首先,請記住您必須為每個 class 覆蓋 equals() 和 hashCode() 函數:

使用 List 時,您可以用不同的方式 map 它:

  • 有序列表,其中訂單未在數據庫中具體化
  • 索引列表,其中訂單在數據庫中具體化

有序列表的實現方式如下:

@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注釋。 此注釋描述了保持索引值的列的列名和屬性。 此列位於包含關聯外鍵的表上。 如果未指定列名,則默認為引用屬性的名稱,后跟下划線,后跟 ORDER(在以下示例中,它將是 orders_ORDER)。

如果你想使用Set<Order>這很簡單:

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

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM