में @UniqueConstraint को परिभाषित करें मुझे एक आवश्यकता है जिसमें मेरी कई संस्थाओं को एक लंबी कीमत और किसी अन्य इकाई के साथ @ManyToOne संबंध की आवश्यकता है। इस आवश्यकता को आसानी से निम्नलिखित तरीके से एक MappedSuperclass के साथ प्राप्त किया जा सकता है:@MappedSuperclass
@MappedSuperclass
public class BaseEntity {
@Column(name = "value", nullable = false)
private Long value;
@JoinColumn(name = "some_entity_id", nullable = false)
@ManyToOne(fetch = FetchType.EAGER)
private SomeEntity some;
समस्या यह है कि लंबे समय के मूल्य और इकाई संयोजन अद्वितीय होना चाहिए है। क्या सुपरक्लास में इंडेक्स को परिभाषित करना संभव है? अगर मैं इकाई कोड अपेक्षित ढंग से काम करता है की @Table में सूचकांक को परिभाषित
@UniqueConstraint(name = "uq1", columnNames = {"value", "some_entity_id"})
झटका है कि बाधा तो सभी बच्चे कक्षाओं के साथ दोहराया जा करने के लिए होता है और फिर सभी परिवर्तनों को भी अवश्य होना चाहिए कि है विरासत को लगभग बेकार छोड़कर (निश्चित रूप से सुरुचिपूर्ण नहीं)
वास्तविक प्रश्न को सारांशित करने के लिए यहां है: @MappedSuperclass से एक समग्र अद्वितीय बाधा को परिभाषित करना संभव है? अगर जवाब नहीं है तो आप क्या करेंगे?
पीएस: मुझे पता है कि यह केवल तब प्रासंगिक है जब टेबल उत्पादन प्रभावी हो, यह हमारे कोडिंग और सर्वोत्तम प्रथाओं की राजनीति का हिस्सा है।
क्या होगा यदि आप बेसइन्टिटी सार बनाते हैं, गेटटर/सेटर एनोटेशन में स्विच करते हैं और एक अमूर्त विधि को परिभाषित करते हैं ID? –