2013-04-16 176 views
0

我有具有一對一的映射與一個PatientVisitObject.java PatientVisit.java:冬眠@OneToOne映射

@Entity 
@Table(name = "P_Visit") 
public class PatientVisit extends Bean { 
    @Id 
    @Column(name = "PATIENT_VISIT_SEQ") 
    private Long patientVisitSeq; 
    @Column(name = "PATIENT_FIRST_NM") 
    private String firstName; 
    @Column(name = "PATIENT_LAST_NM") 
    private String lastName; 
    @Column(name = "PATIENT_MIDDLE_NM") 
    private String middleName; 
    @OneToOne 
    private PatientVisitObject pvo; 
} 

的PatientVisitObject.java具有複合鍵。我需要將key.patientVisitSeq映射到PatientVisit.java中的patientVisitSeq。

@Entity 
@Table(name = "Patient_V_O") 
public class PatientVisitObject extends Bean { 
    @Id 
    private PatientVisitObjectKey key; 
    @Column(name = "FIELD") 
    private String field; 
} 

這裏的關鍵是:

@Embeddable 
public class PatientVisitObjectKey implements Serializable { 
    @Column(name = "PATIENT_VISIT_SEQ") 
    private Long patientVisitSeq; 
    @Column(name = "PATIENT_VISIT_OBJECT_SEQ") 
    private Long patientVisitObjectSeq; 
} 

我已經使用@JoinTable註解嘗試並不能得到它的權利。有人可以給我一些方向。謝謝。

回答

1

您需要使用雙向映射與PatientVisit是關係反方:

public class PatientVisit extends Bean { 
    ... 
    @OneToOne(mappedBy = "pv") 
    private PatientVisitObject pvo; 
    ... 
} 

public class PatientVisitObject extends Bean { 
    @EmbeddedId 
    private PatientVisitObjectKey key; 

    @OneToOne 
    @MapsId("patientVisitSeq") 
    private PatientVisit pv; 

    ... 
} 

參見: