當屬性以 @ElementCollection 標註時,會針對該屬性建立個別的表格來包括屬性 ID 和值。
在 OpenJPA 中,已標註屬性的直欄名稱為 element,而 EclipseLink 則會根據屬性的名稱來命名直欄。如果要維持與使用 OpenJPA 建立的表格相容,請新增 @Column 註釋,並將 name 屬性設為 element。
此規則會掃描是否有 @ElementCollection 註釋不具含 name 屬性的 @Column 註釋。
快速修正程式會新增 @Column 註釋,或編輯沒有 name 屬性的現有 @Column 註釋。
例如,此規則會標示下列欄位存取實體類別中的 @ElementCollection 註釋,因為其沒有 @Column 註釋。
import java.util.List; import javax.persistence.ElementCollection; import javax.persistence.Entity; import javax.persistence.Id; @Entity public class ElementCollectionEntity { @Id private int id; @ElementCollection private List<String> listofStrings; } |
快速修正程式會新增 @Column 註釋。
import java.util.List; import javax.persistence.ElementCollection; import javax.persistence.Entity; import javax.persistence.Id; @Entity public class ElementCollectionEntity { @Id private int id; @ElementCollection @Column(name = "element") private List<String> listofStrings; } |
如需此問題以及其他 OpenJPA 至 EclipseLink 移轉問題的相關資訊,請參閱 OpenJPA 至 EclipseLink JPA 移轉:對映手冊。