Serialization EclipseLink JPA 2类型对序列化映射无效

Serialization EclipseLink JPA 2类型对序列化映射无效,serialization,mapping,eclipselink,jpa-2.0,Serialization,Mapping,Eclipselink,Jpa 2.0,我的应用程序首次运行时出现以下错误 原因:异常[EclipseLink-7155](Eclipse持久性服务-2.0.1.v20100213-r6600):org.Eclipse.Persistence.exceptions.ValidationException 异常说明:实体类[class Novartis.OTM.Data.Db.Entities.DtsTmpClass]上的属性[lapId]的类型[class Lap]不是序列化映射的有效类型。属性类型必须实现可序列化接口 以下是相关实体

我的应用程序首次运行时出现以下错误

原因:异常[EclipseLink-7155](Eclipse持久性服务-2.0.1.v20100213-r6600):org.Eclipse.Persistence.exceptions.ValidationException 异常说明:实体类[class Novartis.OTM.Data.Db.Entities.DtsTmpClass]上的属性[lapId]的类型[class Lap]不是序列化映射的有效类型。属性类型必须实现可序列化接口

以下是相关实体

@SequenceGenerator(name="SEQ_DTS_TMP_CLASS", sequenceName="SEQ_DTS_TMP_CLASS", allocationSize=1)
@Entity
@Table(name = "DTS_TMP_CLASS")
@NamedQueries({
    @NamedQuery(name = "DtsTmpClass.findAll", query = "SELECT d FROM DtsTmpClass d"),
    @NamedQuery(name = "DtsTmpClass.findByDtsTmpClassId", query = "SELECT d FROM DtsTmpClass d WHERE d.dtsTmpClassId = :dtsTmpClassId")})
public class DtsTmpClass implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "DTS_TMP_CLASS_ID")
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ_DTS_TMP_CLASS")
    private Integer dtsTmpClassId;
    @JoinColumn(name = "LAP_ID", referencedColumnName = "LAP_ID")
    @ManyToOne(optional = false, fetch=FetchType.EAGER)
    private Lap lapId;
    ...
}
正如您在下面看到的,输入Lap implements Serializable

@SequenceGenerator(name="SEQ_LAP", sequenceName="SEQ_LAP", allocationSize=1)
@Entity
@Table(name = "LAP")
@NamedQueries({
    @NamedQuery(name = "Lap.findAll", query = "SELECT l FROM Lap l"),
    @NamedQuery(name = "Lap.findByLapId", query = "SELECT l FROM Lap l WHERE l.lapId = :lapId"),
    @NamedQuery(name = "Lap.findByDeprecate", query = "SELECT l FROM Lap l WHERE l.deprecate = :deprecate")})
public class Lap implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "LAP_ID")
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ_LAP")
    private Integer lapId;
    @Column(name = "DEPRECATE")
    private Character deprecate;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "lapId")
    private Collection<LapAnal> lapAnalCollection;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "lapId")
    private Collection<LapDomain> lapDomainCollection;
    @JoinColumn(name = "ASSAY_PLATFORM_ID", referencedColumnName = "LOOKUP_ID")
    @ManyToOne(optional = false, fetch=FetchType.EAGER)
    private Lookup assayPlatformId;
    @JoinColumn(name = "LABORATORY_ID", referencedColumnName = "LOOKUP_ID")
    @ManyToOne(optional = false, fetch=FetchType.EAGER)
    private Lookup laboratoryId;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "lapId")
    private Collection<DtsTmpClass> dtsTmpClassCollection;
    ...
}
@SequenceGenerator(name=“SEQ\u LAP”,sequenceName=“SEQ\u LAP”,allocationSize=1)
@实体
@表(name=“LAP”)
@命名查询({
@NamedQuery(name=“Lap.findAll”,query=“从Lap l中选择l”),
@NamedQuery(name=“Lap.findByLapId”,query=“从Lap l中选择l,其中l.lapId=:lapId”),
@NamedQuery(name=“Lap.findbydepreate”,query=“从Lap l中选择l,其中l.deprecate=:deprecate”)}
公共类Lap实现了可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
@基本(可选=假)
@列(name=“LAP\u ID”)
@GeneratedValue(策略=GenerationType.SEQUENCE,generator=“SEQ_LAP”)
私有整数lapId;
@列(name=“DEPRECATE”)
私人性格不受欢迎;
@OneToMany(cascade=CascadeType.ALL,mappedBy=“lapId”)
私人收藏和私人收藏;
@OneToMany(cascade=CascadeType.ALL,mappedBy=“lapId”)
私人收藏领域收藏;
@JoinColumn(name=“化验平台ID”,referencedColumnName=“查找ID”)
@ManyToOne(可选=false,fetch=FetchType.EAGER)
私有查询平台;
@JoinColumn(name=“LABORATORY\u ID”,referencedColumnName=“LOOKUP\u ID”)
@ManyToOne(可选=false,fetch=FetchType.EAGER)
私有查找实验室ID;
@OneToMany(cascade=CascadeType.ALL,mappedBy=“lapId”)
私人收藏dtsTmpClassCollection;
...
}
真正奇怪的是,我只是缩短了表名和列名,这样Oracle就不会超过30个字符的限制。它只是在工作

我很困惑

谢谢

克里斯