के बीच साझा किया मैं एक @Id के साथ एक 'कुत्ता' Entitiy और एक @TableGeneratorजेपीए @TableGenerator, विभिन्न इकाइयों
...
@TableGenerator(table = "seq", name = "dog_gen", pkColumnName = "seq_name", valueColumnName="seq_val")
@Id @GeneratedValue(strategy = GenerationType.TABLE, generator = "dog_gen")
private Long id;
...
वहाँ अन्य संस्था में एक ही तालिका जनरेटर (dog_gen) का पुन: उपयोग करने के लिए एक रास्ता है है? मैं दो स्वतंत्र संस्थाओं में एक ही आईडी अनुक्रम रखना चाहते हैं, कहते हैं कि
कुत्ते = 1, कुत्ते = 2, कुत्ते = 3, बिल्ली = 4, बिल्ली = 5, कुत्ते = 6 और इतने पर ...
दोनों संस्थाएं आईडी संपत्ति के साथ किसी प्रकार की विरासत को लागू करने के लिए एक सामान्य सुपरक्लास साझा नहीं करती हैं।
अगर मैं अपने बिल्ली इकाई पर @GeneratedValue (जनरेटर = "dog_gen") जोड़ने के लिए, @TableGenerator घोषणा को छोड़ते हुए एक अपवाद कह जब संदर्भ शुरू कर यह जनरेटर नहीं मिल सकता है फेंकता है।
Caused by: org.hibernate.AnnotationException: Unknown Id.generator: dog_gen
at org.hibernate.cfg.BinderHelper.makeIdGenerator(BinderHelper.java:413)
at org.hibernate.cfg.AnnotationBinder.bindId(AnnotationBinder.java:1795)
at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1229)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:733)
at org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:498)
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:277)
मैं इसे करने की कोशिश की ... यह केवल काम करने के लिए लगता है, क्योंकि आवंटन आकार 1. है लेकिन असल में अलग जनरेटर उत्तर कार्य अलग से बनाया गया है। यदि आप 1 से अधिक आवंटन आकार चुनते हैं, तो आप देखेंगे कि आपके पास प्रत्येक इकाई के लिए अलग-अलग आईडी श्रेणियां होंगी। (यहां हाइबरनेट 3.6 का उपयोग करके, शायद यह 4.x के साथ बेहतर काम करता है?) –