मैं निम्नलिखित वर्ग है कि मैं वसंत डाटास्टोर जावा 8 SpringData-MongoDB का उपयोग कर BSON तारीख के रूप में त्वरित
@Document()
public class Tuple2<T extends Enum<T>> {
@Id
private String id;
@Indexed
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
private final Instant timeCreated;
...
}
DateTimeFormat एनोटेशन जावाडोक राज्यों का उपयोग कर MongoDB में संग्रहीत करना चाहते हैं है
की घोषणा: एक है कि क्षेत्र को दिनांक समय के रूप में स्वरूपित किया जाना चाहिए। शैली पैटर्न, आईएसओ दिनांक समय पैटर्न, या कस्टम प्रारूप पैटर्न स्ट्रिंग द्वारा स्वरूपण का समर्थन करता है। Java.util.Date, java.util.Calendar, java.long.Long, जोडा-टाइम मान प्रकारों पर लागू किया जा सकता है; और स्प्रिंग 4 और जेडीके 8 के रूप में, जेएसआर -310 जावा.टाइम प्रकारों के लिए भी।
मैं वसंत 4.1.1 और जेडीके 8 का उपयोग कर रहा हूं, इसलिए मुझे उम्मीद है कि यह Instant
पर लागू होगा। हालांकि, यहां क्या वास्तव में संग्रहीत किया जाता है है:
"timeCreated" : {
"seconds" : NumberLong(1416757496),
"nanos" : 503000000
}
अगर मैं लिख सकते हैं और तरह का दिनांक this answer में विस्तार से बताया तो यह काम करता है के लिए त्वरित से कस्टम कनवर्टर रजिस्टर, हालांकि मुझे लगता है कि से बचना चाहते हैं, के रूप में मुझे यकीन है कि वहाँ होना चाहिए हूँ एक बेहतर तरीका है।
प्रारूप JDK 8.
में JSR-310 java.time पैकेज का उपयोग DateTimeFormat एनोटेशन के साथ एनोटेट क्षेत्रों:आगे वसंत स्रोत कोड में खुदाई करने के बाद मैं निम्नलिखित वर्ग
Jsr310DateTimeFormatAnnotationFormatterFactory
जो होनहार लग रहा है मिल गया है
इसका स्रोत Instant
का संदर्भ नहीं देता है, लेकिन यह ऑफ़सेटटाइम और लोकलटाइम का संदर्भ देता है। इसके बावजूद, जब मैं अपने उदाहरण में ऑफसेटडेटाइम होने के लिए तत्काल बदलता हूं, तो यह अभी भी ISODATE के बजाय एक समग्र ऑब्जेक्ट के रूप में संग्रहीत है।
क्या गुम है?
उचित लगता है। 'Jsr310DateTimeFormatAnnotationFormatterFactory' में' ऑफसेटडेट टाइम 'है, लेकिन यह प्रारूपित नहीं है – Vic
@Vic DateTimeFormat एनोटेशन भंडारण (mongodb) में स्वरूपण के लिए ज़िम्मेदार नहीं है। यह एप्लिकेशन-स्तर पर काम करता है (उदाहरण के लिए जेएसपी पृष्ठों पर स्वरूपण)। डेटा को उचित प्रकार में परिवर्तित करने के लिए कन्वर्टर्स हैं। मुझे जावा 8 टाइम एपीआई के लिए केवल 'ZonedDateTimeToCalendarConverter' मिला। तो क्या आप ZonedDateTime का उपयोग करने का प्रयास कर सकते हैं? – retroq