一千萬個為什麽

搜索

如何通過JPA持久化java.util.Set?

我在一個 Entity 中有一個 java.util.Set 類型的字段別名。此 Set 不表示與實體的任何關系。

  1. 如何通過JPA存儲此別名字段?

  2. 此字段如何存儲在數據庫中?我認為對於數據庫來說,這個字段是一個多值屬性。

最佳答案

如何通過JPA存儲此別名字段?

JPA 1.0不支持基本類型的集合,因此您必須:

  1. 介紹一個實體並將其映射為 @OneToMany 〜或〜
  2. 獲取存儲在BLOB中的 Set (作為 Serializable )〜或〜
  3. 標記 @Transient 並使用另一個getter/setter來使用自定義字符串表示(使用分隔符)來存儲它〜或〜
  4. 使用支持基本類型集合的JPA提供程序的擴展(例如,Hibernate具有 @CollectionOfElements 註釋)。

解決方案#1將是最幹凈的便攜式解決方案。解決方案#2可能會導致一些升級問題。解決方案#3是#2的一個醜陋的解決方法。解決方案#4幹凈但不便攜。

在JPA 2.0中,有 @ElementCollection <�這個用例的/ code> 註釋(這當然是理想的解決方案)。

此字段如何存儲在數據庫中

根據所選的實現,它可能位於另一個表中的BLOB,VARCHAR中。

轉載註明原文: 如何通過JPA持久化java.util.Set?