JPA 2 (EclipseLink) Type Not Valid For Serialized Mapping
678903Mar 8 2011 — edited Mar 11 2011Hi Everyone,
I am getting the following error when my application first runs...
Caused by: Exception [EclipseLink-7155] (Eclipse Persistence Services - 2.0.1.v20100213-r6600): org.eclipse.persistence.exceptions.ValidationException Exception Description: The type [class Lap] for the attribute [lapId] on the entity class [class Novartis.OTM.Data.Db.Entities.DtsTmpClass] is not a valid type for a serialized mapping. The attribute type must implement the Serializable interface.
Here are the relevant entities.
@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;
...
}
As you can see below, type 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;
...
}
What really odd is that I just shortened the table and column names so Oracle 11g wouldn't barf over the 30 character limit when table.columns are concatenated for inserts. It was just working.
I'm baffled!
Thanks,
Chris
Edited by: user10773481 on Mar 8, 2011 1:53 PM