当属性通过 @ElementCollection 进行注释后,将为属性创建包含属性标识和值的单独表。在 OpenJPA 中,已注释属性的列名为 element,而 EclipseLink 根据属性的名称对列命名。要仍与通过 OpenJPA 创建的表兼容,添加其 name 属性设置为 element 的 @Column 注释。
该 @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 to EclipseLink JPA Migration: Mappings 指南。