2016-09-01 6 views
1

ひどく設計されたDBをマップする必要があります。そしてクラス「コート」には、FKフィールドを備えた構成されたPKがあります。そこで、IdClassで派生したエンティティを使用しないように埋め込み可能なものを作成しました。あなたは、私がかつてembeddedIdで、一度クラスコート内の列の評価critereとSEUILを使用見ることができるようにJPA HIBERNATE - 列を2回マッピングする(埋め込みIDとPOJO)

@Embeddable 
public class CotePK implements Serializable{ 

/** 
* 
*/ 
private static final long serialVersionUID = 6835265195560184935L; 
@Column(name="Evaluation", nullable=false) 
private Integer evaluationId; 

@Column(name="CRITERE", nullable =false) 
private String critereId; 

@Column(name="SEUIL", nullable=false) 
private String seuilId; 

:以下EmbeddedIdで

@Entity 
@Table(name="EVA_COTE") 
public class Cote implements Serializable{ 

/** 
* 
*/ 
private static final long serialVersionUID = -3902534586060936635L; 

@EmbeddedId 
private CotePK cotePK; 

@ManyToOne 
@JoinColumn(name="Evaluation", referencedColumnName = "NUDOSS") 
private Evaluation evaluation; 

@ManyToOne 
@JoinColumn(name="CRITERE", referencedColumnName = "CODE") 
private Critere critere; 

@ManyToOne 
@JoinColumn(name="SEUIL", referencedColumnName = "CODE") 
private Seuil seuil; 

@Column(name="VALEUR", columnDefinition="Decimal(5,0)") 
private Integer valeur; 

@Column(name="OBSERVATIONS", length=500) 
private String observations; 

:だから私はこれを試してみました。もちろん、それは動作しません、私はもう何を試していいのかわかりません。 JPAに2つのフィールドをリンクさせる方法はありますか?

答えて

0

私の最終的な解決策: @Entity @Table(名前= "EVA_COTE") パブリッククラスコートはこの注釈を追加シリアライズ{

/** 
* 
*/ 
private static final long serialVersionUID = -3902534586060936635L; 

@EmbeddedId 
private CotePK cotePK; 

@ManyToOne 
@MapsId("evaluationId") 
@JoinColumn(name="EVALUATION", referencedColumnName = "NUDOSS") 
private Evaluation evaluation; 

@ManyToOne 
@MapsId("critereId") 
@JoinColumn(name="CRITERE", referencedColumnName = "CODE") 
private Critere critere; 

@ManyToOne 
@MapsId("seuilId") 
@JoinColumn(name="SEUIL", referencedColumnName = "CODE") 
private Seuil seuil; 
0

を実装して複合主キー

 @EmbeddedId    
     @AttributeOverrides({ 
       @AttributeOverride(name="column_varible_name_1", [email protected](name="column_name_1", nullable=false, length=<x>)), 
       @AttributeOverride(name="column_varible_name_2", [email protected](name="column_name_2", nullable=false, length=<x>)) }) 
関連する問題