यदि मैप किए गए सुपरक्लास पर आईडी परिभाषित किया गया है, तो प्रत्येक तालिका के लिए अलग-अलग अनुक्रम निर्दिष्ट करने का कोई तरीका है?उप-वर्गों पर हाइबरनेट में प्रति तालिका के विशिष्ट अनुक्रम निर्दिष्ट करना
हमारे आवेदन के सभी संस्थाओं का विस्तार एक सुपर क्लास DataObject
इस तरह कहा जाता है:
@MappedSuperclass
public abstract class DataObject implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "id")
private int id;
}
@Entity
@Table(name = "entity_a")
public class EntityA extends DataObject { ... }
@Entity
@Table(name = "entity_b")
public class EntityB extends DataObject { ... }
यह एक साझा अनुक्रम, डिफ़ॉल्ट hibernate_sequence
उपयोग करने के लिए सभी संस्थाओं का कारण बनता है।
मैं जो करना चाहता हूं वह प्रत्येक इकाई के लिए एक अलग अनुक्रम का उपयोग करता है, उदाहरण के लिए उपरोक्त उदाहरण में entity_a_sequence
और entity_b_sequence
। यदि आईडी उपclasses पर निर्दिष्ट किया गया था तो मैं प्रत्येक इकाई के लिए अनुक्रम निर्दिष्ट करने के लिए @SequenceGenerator
एनोटेशन का उपयोग कर सकता था, लेकिन इस मामले में आईडी superclass पर है। यह देखते हुए कि आईडी superclass में है, क्या एक तरीका है कि मैं प्रत्येक इकाई के लिए एक अलग अनुक्रम का उपयोग कर सकता हूं - और यदि हां, तो कैसे?
(हम PostgreSQL 8.3 का उपयोग कर रहे हैं, ऐसा होता है कि प्रासंगिक है में)
हाँ - यह काम करता है! मैंने कुछ ऐसा करने की कोशिश की थी लेकिन 'org.hibernate.AnnotationException: अज्ञात Id.generator: idgen' प्राप्त करना जारी रखा। हालांकि आपका कोड ठीक काम करता है; यह पता चला है कि मैं अपने पहले प्रयास में उपखंडों में से एक पर '@ अनुक्रम जेनरेटर' शामिल करना भूल गया था। तो जवाब यह है कि यह काम करता है, जब तक कि प्रत्येक इकाई उपclass पर @SequenceGenerator एनोटेशन है। – gutch