Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

हाइबरनेट के साथ स्प्रिंग बूट:कॉलम के साथ ऑटो-जनरेटिंग डेटाबेस स्कीमा जिसमें सेकंड के अंश हो सकते हैं

MySql57Dialect (और/या MySql57InnoDbDialect , हाइबरनेट के संस्करण के आधार पर), TIMESTAMP SQL प्रकार पहले से ही एक TIMESTAMP(6) में मैप किया गया है डेटाबेस कॉलम प्रकार:

registerColumnType( Types.TIMESTAMP, "datetime(6)" );

इसका मतलब है कि डिफ़ॉल्ट कॉलम परिभाषा को माइक्रोसेकंड परिशुद्धता का समर्थन करना चाहिए। कार्रवाई का सबसे अच्छा तरीका यह है कि हाइबरनेट को कॉलम परिभाषा को ओवरराइड किए बिना स्कीमा उत्पन्न करने दें। अधिकांश अन्य डेटाबेस के लिए, यह एक साधारण TIMESTAMP . में शानदार ढंग से अवक्रमित हो जाएगा .

यदि आप भविष्य में किसी अन्य डेटाबेस पर स्विच करना चाहते हैं जो माइक्रोसेकंड परिशुद्धता का भी समर्थन करता है, तो प्रासंगिक Dialect देखें।; इसमें संभवतः सुविधा के लिए समर्थन शामिल होगा, और यदि नहीं, तो आप इसे हमेशा अनुकूलित कर सकते हैं।

ऐसा इसलिए है क्योंकि registerColumnType . में ऊपर कॉल करें, TIMESTAMP . की सटीकता 6 पर तय किया गया है। यदि आप इसे अनुकूलित करने में सक्षम होना चाहते हैं, तो अपनी स्वयं की कस्टम बोली (MySql57Dialect से विस्तारित) को रोल आउट करें। ) और इसके साथ परिभाषा को ओवरराइड करें:

registerColumnType(Types.TIMESTAMP, 6, "timestamp($l)"); //l for length, p for precicion, s for scale

फिर आप length . का उपयोग करके कॉलम की लंबाई को ओवरराइड करने में सक्षम होंगे , precision , या scale (यह निर्भर करता है कि आपने कोष्ठक के अंदर क्या रखा है)। ध्यान दें कि विधि का दूसरा तर्क इस विशेष डेटाटाइप के लिए अधिकतम संभव कॉलम लंबाई को परिभाषित करता है, इसलिए यदि आप चाहते हैं उदा। नैनोसेकंड सटीक, आपको इसे 9 में बदलना चाहिए।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पीडीओ एकाधिक नामित प्लेसहोल्डर डेटा पुनर्प्राप्त नहीं करते हैं

  2. MySQL अलग का चयन करें काम नहीं करता

  3. MySQL एक विदेशी कुंजी बाधा में आवश्यक सूचकांक को नहीं छोड़ सकता

  4. डेटाबेस डिजाइन:ईएवी विकल्प?

  5. एक तालिका के भीतर अतिव्यापी (दिनांक/समय) पंक्तियों का पता लगाएं