2013-04-12 9 views
17

में कॉलम परिभाषाओं को अद्यतन नहीं करता है I hbm2ddl.auto = अद्यतन के साथ मौजूदा तालिका को अद्यतन करने का प्रयास कर रहा हूं।

कई तालिकाओं में कई कॉलम हैं जहां डेटाबेस कॉलम परिभाषाएं इकाइयों में घोषणा से बदलती हैं।Hibernate hbm2ddl.auto = अद्यतन MySQL

@Column(name="mycolumn", nullable=false, length=10) 
private Long mycolumn; 

और

की तरह 'MyColumn' bigint (20) नहीं अशक्त डिफ़ॉल्ट 0

MySQL में

क्यों hbm2ddl ऐसी चीजों को अद्यतन नहीं करता है? और क्या इस तरह के अद्यतन को मजबूर करना संभव है? मैं कॉलम के डिफ़ॉल्ट मान को हटाने और प्रकार की लंबाई बदलने के लिए hbm2ddl कहना चाहता हूं।

उत्तर

32

hibernate.hbm2ddl.auto" value="update मौजूदा तालिका स्तंभ परिभाषाओं बदलाव नहीं करेगी।

hibernate.hbm2ddl.auto" value="update एक डाटाबेस स्तंभ कि पहले से ही मौजूद नहीं है जोड़ देगा: कुछ परीक्षण मैंने पाया कि ऐसा करने से।

hibernate.hbm2ddl.auto" value="update एक डाटाबेस स्तंभ कि आपकी संस्था में निकाल दिया जाता है/अब कोई नहीं हटेगा।

hibernate.hbm2ddl.auto" value="update एक डाटाबेस स्तंभ पहले से ही बनाया गया है कि बदलाव नहीं करेगी।

आप तालिका डेटा बैकअप करने की आवश्यकता होगी, इसे छोड़ और अपने इकाई के साथ सिंक में वापस उस तालिका स्कीमा प्राप्त करने के लिए आपके आवेदन को पुनः आरंभ। फिर अपना डेटा पुनः लोड करें।

देखें:
Need clarity on hibernate.hbm2ddl.auto=update

और
Hibernate hbm2ddl.auto possible values and what they do?

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