在很多來源中,我讀過PrimaryKey類,甚至JPA2實體都應該是可序列化的。爲什麼JPA-2.0主鍵類必須實現Serializable,但我的示例沒有使用?
在我的例子(傳統數據庫)有僱員和語言之間的關係:
Employee類:
@Entity
@IdClass(EmpleadoId.class)
@Table(name = "NO_INFGRAEMPL")
public class Empleado {
@Id
@Column(name = "IGECOMPANIA", unique = true)
private String compania;
@Id
@Column(name = "IGENUMEROIDENTIFIC", unique = true)
private String numeroIdentificacion;
//...
}
僱員化合物的PrimaryKey類別:
public class EmpleadoId {
private String compania;
private String numeroIdentificacion;
//...
}
員工語言技能類:
@Entity
@IdClass(IdiomaEmpleadoId.class)
@Table(name = "NO_IDIOMEMPLE")
public class IdiomaEmpleado {
@Id
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumns(value = {
@JoinColumn(name= "IEMCOMPANIA", referencedColumnName = "IGECOMPANIA"),
@JoinColumn(name = "IEMEMPLEADO", referencedColumnName = "IGENUMEROIDENTIFIC")
})
private Empleado empleado;
@Id
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "IEMIDIOMA")
private Idioma idioma;
@Column(name = "IEMNIVELLECTURA")
private String nivelLectura;
//...
}
員工語言技能複合的PrimaryKey類:
public class IdiomaEmpleadoId {
private EmpleadoId empleado;
private String idioma;
//...
}
語言類:
@Entity
@Table(name = "NO_IDIOMAS")
public class Idioma {
@Id
@Column(name = "IDICODIGO")
private String codigo;
@Column(name = "IDIDESCRIPCION")
private String descripcion;
//...
}
我使用的EclipseLink JPA2提供下一個J2SE應用程序,它不給我任何異常。
我的問題是:
- 爲什麼不給我例外?是否強制使用Serializable?
- 以這種方式繼續安全嗎?還是我應該明確實現可序列化?
- 在哪些?,JPA2實體或PrimaryKey類?
非常感謝您的幫助。
+1。我從來不明白爲什麼這是必需的。 – Bozho 2011-04-19 19:51:53