आप कार्ड की तालिका को इंगित करने के लिए @OneToOne के बाद एनोटेशन @JoinTable का उपयोग कर सकते हैं, इसलिए आपको कार्ड के लिए किसी इकाई की आवश्यकता नहीं होगी, लेकिन यदि कार्ड की तालिका केवल एक संबंधपरक तालिका नहीं है, तो आप उपयोगकर्ता में कार्ड को @OneToOne के रूप में मैप कर सकते हैं और एक @Transient 'getAddress ()' विधि है जो 'this.card.getAddress ()' लौटाती है, लेकिन कार्ड की इकाई पर आपको पता और कार्ड (@OneToOne(mappedBy='card_id')) के बीच संबंध को मैप करना होगा, और में पता आप card_id को @Id के रूप में मैप कर सकते हैं।
पहला विकल्प
ग्राहक:
@OneToOne
@JoinTable(name="card", joinColumns = @JoinColumn(name="cust_id"),
inverseJoinColumns = @JoinColumn(name="card_id"))
private Address address;
दूसरा विकल्प
ग्राहक:
@OneToOne(mappedBy="cust_id")
private Card card;
...
@Transient
public Address getAddress(){
return this.card == null ? null : this.card.getAddress();
}
कार्ड:
@OneToOne(mappedBy="card_id")
private Address address;
पता:
@Id
private String card_id;
दूसरे मामले में कार्ड में एक एंबेडेड pk होता है जो दो fks (ग्राहक और पता) द्वारा बनता है
कार्ड:
@EmbeddedId
private CustomerAddressPK id;
CustomerAddressPK
@Embeddable
public class CustomerAddressPK(){
private String cust_id;
private String card_id;
}