ElementCollection 註釋必須隨附已定義的 Column 註釋

當屬性以 @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 移轉:對映手冊。