मैं इस एक अलग जवाब के रूप में के बाद से यह मेरी राय में महत्वपूर्ण जानकारी में है हाइबरनेट करने के लिए 4 उन्नयन किसी के लिए भी जोड़ देंगे, और जरूरत में jadira के लगातार अस्थायी प्रकार का उपयोग करने के लिए पलायन की । यह पृष्ठ हाइबरनेट 4 और जोडाटाइम के लिए Google खोज परिणामों में अत्यधिक रैंक है, इसलिए मैं इसे यहां जोड़ दूंगा। (इस मुद्दे की एक अलग चर्चा के लिए, देखें: Joda time DateTime incorrectly stores in database)
यदि आप यूटीसी के अलावा एक समय क्षेत्र में हैं, तो वही व्यवहार प्राप्त करने के लिए कॉन्फ़िगरेशन का एक महत्वपूर्ण टुकड़ा आवश्यक है जैसे आप जोडा-टाइम हाइबरनेट के साथ करेंगे -support प्रकार। जिस तरह से जादिरा के अस्थायी प्रकार डिफ़ॉल्ट रूप से काम करते हैं, डेटाबेस से पहले सभी मानों को यूटीसी टाइमज़ोन में परिवर्तित करने और डेटाबेस से मूल्यों को लोड करते समय सिस्टम के टाइमज़ोन में कनवर्ट करने के माध्यम से होता है।
मुझे अपग्रेड करने के बाद इसे जला दिया गया, जब मेरे पास डेटाबेस में मेरे सटीक टाइमज़ोन (यूटीसी + 1 (+2 गर्मियों में) के साथ बहुत सी टाइमस्टैम्प थीं। जब हाइबरनेट 4, 1 या 2 घंटों तक अपग्रेड करने के बाद लोड किया जाता है (ग्रीष्मकालीन समय के दौरान टाइमस्टैम्प था या नहीं) डेटाबेस में मूल्य में जोड़ा गया था, जिसका मतलब था कि सभी मौजूदा टाइमस्टैम्प गलती से प्रस्तुत किए गए थे। इसके अलावा, यूटीसी टाइमज़ोन के साथ डेटाबेस में नए टाइमस्टैम्प मान संग्रहीत किए गए थे, जिससे उन्हें एप्लिकेशन में सही तरीके से दिखाई देने के लिए प्रेरित किया गया था, लेकिन डेटाबेस में गलत था।सब कुछ, टाइमज़ोन और टाइमस्टैम्प की एक गर्म गड़बड़।
तो, जोडा-टाइम्स हाइबरनेट-सपोर्ट के साथ समान व्यवहार प्राप्त करने के लिए (डेटाटाइम को प्रश्न में सर्वर के टाइमज़ोन के रूप में जारी रखा जा रहा है, और डेटाबेस में टाइमस्टैम्प लोड होने के समान ही हैं आवेदन में), निम्नलिखित गुण जेपीए/हाइबरनेट विन्यास के लिए (मेरे मामले में, जोड़ा जाना चाहिए hibernate.properties
):
jadira.usertype.autoRegisterUserTypes=true
jadira.usertype.databaseZone=jvm
jadira.usertype.javaZone=jvm
यह सुनिश्चित करें कि डेटाबेस में टाइमस्टैम्प रूप में एक ही समय क्षेत्र का हो जाएगा कर देगा आवेदन की, जो बदले में जेवीएम का समय क्षेत्र होगा (ज्यादातर मामलों में एप्लिकेशन सर्वर की घड़ी)।
इसके अलावा
, autoRegisterUserTypes
-property, से मैं क्या समझ आम प्रकार, उन के बीच Jodatime-प्रकार DateTime
और LocalDate
के चयन के लिए @Type
-annotation के लिए की जरूरत को हटा।
आपने अभी हमें बताया है कि उन्होंने * एक साथ काम किया है, है ना? – skaffman
@ स्काफमैन मैंने कॉलम निर्माण के अलावा किसी अन्य चीज का परीक्षण नहीं किया है ... यह मेरी समझ थी कि पिछले संस्करण (जोडा-टाइम lib का) को हाइबरनेट के नए संस्करण के खिलाफ पुनः संयोजित किया जाना था। यह एक अलार्म था - इसलिए सवाल ... – NimChimpsky
वे खुशी से शादी नहीं कर रहे हैं, हाइबरनेट में अन्य रिश्ते हैं ... और जोडा ..:/.. वह चोट पहुंची है – nobalG