2012-01-13 11 views
0

「コンポジット-ID」エラーを返す一対一の関係のキーとして私は、次の2つのエンティティがあります。は、Entity

@Entity(name = "Employee") 
    @Table(name = "EMPLOYEE") 
    public class Employee implements Serializable { 
     @Id 
     @Column(name = "EMP_ID", insertable = true, updatable = false, nullable = false) 
     private int id; 

@Entity(name = "Draw") 
@Table(name = "DRAW") 

public class Draw extends AuditableEntity { 
    @Id 
    @OneToOne(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.MERGE}) 
    @JoinColumn(name = "EMP_ID", referencedColumnName = "EMP_ID") 
    @Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE, 
     org.hibernate.annotations.CascadeType.MERGE}) 
    private Employee employee = null; 

をちょうどそれは、彼らがそれを望むようだとしましょうモデル化された。これは指定されたOneToOne関係です。私がテストするために行くときしかし、私は次のエラーを取得する:

はなぜDrawemployeeキーが複合-IDとして解釈され

nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [META-INF/spring/datasource-context.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: composite-id class must implement Serializable: com.myprojects.tet.data.entity.Draw

?また、このエラーをどのように修正するのですか? I have read参照されるエンティティはシリアライズ可能である必要がありますが、メソッド equalshashCode(これはまだ実装されていません)を実装する必要があります。これらの2つの実装はそのエラーを修正する必要がありますか?明確にするため

編集:EMPLOYEEDRAW

私は2つのモデル化されたテーブルを持っている

EMPLOYEEがあります:整数emp_id、プラス他の列の多くを。

DRAWは、整数emp_id、整数totalPointsを有する。

描画テーブルに一定時間ごとにデータが取り込まれてパージされるため、列totalPointはテーブルEMPLOYEEに入れることはできません。エンティティの関係が正しいかどうかはわかりません(drawのIDとしてエンティティemployee)。

答えて

2

@PrimaryKeyJoinColumn@JoinColumnを置き換えます

@Id 
@Column(name = "EMP_ID") 
private int id; 

@OneToOne(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.MERGE}) 
@PrimaryKeyJoinColumn(name = "EMP_ID", referencedColumnName = "EMP_ID") 
@Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE, org.hibernate.annotations.CascadeType.MERGE}) 
private Employee employee; 
+1

をこれが機能していない、それは内部メソッドのNPEを作成します。.. – Nimchip

+0

私は私がやっていることは権利を取得-行く – Nimchip

+1

からであるかどうかを確認するために編集しました@ Nimchip:見て[ここ](http://stackoverflow.com/questions/787698)、同様の問題のように見えます。 –