未注释集合属性需要 Transient 注释

在 OpenJPA 中,从 java.util.Collection<E> 接口继承的属性不是缺省持久性类型,因此除非对它们进行注释,否则不会将它们持久存储。 EclipseLink 具有不同缺省行为并尝试将这些属性持久保存到数据库。要保留忽略未注释集合属性的 OpenJPA 行为,请将 javax.persistence.Transient 注释添加到 EclipseLink 中的这些属性。

该规则标记不包含从 java.util.Collection<E> 接口(包括以下子接口)继承的 JPA 注释的属性:

在以下实体类中,collectionFieldlistField 属性由规则标记。

导入 java.util.Collection; 导入 java.util.List; 导入 javax.persistence.Entity; 导入 javax.persistence.Id; @ 实体 public class UnannotatedCollectionEntity { @Id private int id; private Collection collectionField; private List listField; }

自动修复将添加 @Transient 注释和导入语句。

导入 java.util.Collection; 导入 java.util.List; 导入 javax.persistence.Entity; 导入 javax.persistence.Id; 导入 javax.persistence.Transient; @ 实体 公共类 UnannotatedCollectionEntity { @Id private int id; @Transient private Collection collectionField; @Transient private List listField; }

有关此问题和其他 OpenJPA 到 EclipseLink 迁移问题的信息,请参阅 OpenJPA to EclipseLink JPA Migration: Mappings 指南。