2011-10-07 12 views
5

का उपयोग कर आईडी और डीबी योजना निर्माण के लिए साझा अनुक्रम जनरेटर। मुझे एचबीएम 2 डीडीएल के माध्यम से डीबी योजना निर्माण के साथ कोई समस्या है। मैं सभी निजी कुंजी के लिए साझा अनुक्रम जनरेटर का उपयोग करना चाहता हूं। तो मैंने इसे किसी इकाई में एक बार परिभाषित किया।एचबीएम 2ddl

@Entity 
@SequenceGenerator(name = "MY_SEQUENCE_GENERATOR", sequenceName = "MY_SEQ") 
public class MyEntity implements Serializable { 
.... 
} 

फिर मैं सभी अनुक्रमों के लिए इस अनुक्रम जनरेटर का उपयोग करना चाहता हूं।

public class SomeEntity1 implements Serializable { 
    @Id 
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "MY_SEQUENCE_GENERATOR") 
    Long id;  
    .... 
} 

public class SomeEntity2 implements Serializable { 
    @Id 
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "MY_SEQUENCE_GENERATOR") 
    Long id;  
    .... 
} 

जब मैं hbm2ddl चींटी कार्य चलाने मैं एक अपवाद प्राप्त करें:

[hibernatetool] javax.persistence.PersistenceException: org.hibernate.AnnotationException: Unknown Id.generator: MY_SEQUENCE_GENERATOR 
[hibernatetool] org.hibernate.AnnotationException: Unknown Id.generator: MY_SEQUENCE_GENERATOR 

यह कोई मुद्दा है या मैं कुछ गलत कर रहा हूँ?

+0

आप किस डेटाबेस पर ऐसा करने की कोशिश कर रहे हैं? –

+0

मैं ओरेकल 11 जी के लिए स्कीम निर्माण स्क्रिप्ट उत्पन्न करने की कोशिश कर रहा हूं। – Vladimir

उत्तर

0

अनुक्रम आयात, यानी @SequenceGenerator एनोटेशन सभी वर्गों में प्रस्तुत किया जाना चाहिए। तो इस टिप्पणी के साथ एक अमूर्त वर्ग बनाने के लिए और इसे से सभी संस्थाओं का विस्तार:

@SequenceGenerator(name = "MY_SEQUENCE_GENERATOR", sequenceName = "MY_SEQ") 
public abstract class BaseEntity implements Serializable { 
.... 
} 

public class SomeEntity1 extends BaseEntity { 
    @Id 
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "MY_SEQUENCE_GENERATOR") 
    Long id;  
    .... 
} 

public class SomeEntity2 extends BaseEntity { 
    @Id 
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "MY_SEQUENCE_GENERATOR") 
    Long id;  
    .... 
} 
+0

प्रतिक्रिया @forker के लिए धन्यवाद। लेकिन @ सवेन्स जेनरेटर के लिए जावाडोक हमें बताता है कि "अनुक्रम जनरेटर को इकाई वर्ग या प्राथमिक कुंजी फ़ील्ड या संपत्ति पर निर्दिष्ट किया जा सकता है। जेनरेटर नाम का दायरा दृढ़ता इकाई (सभी जेनरेटर प्रकारों में) के लिए वैश्विक है।" – Vladimir

2

इस porblem का समाधान पैकेज के लिए package-ingo.java फ़ाइल में साझा @SequenceGenerator को परिभाषित मेरी संस्थाओं रखा गया था।

संबंधित मुद्दे