के साथ दिनांक मुझे मिलीसेकंड के साथ तिथियों के प्रबंधन के बारे में कोई समस्या है। मैं दुकान मिलीसेकेंड के लिए TIMESTAMP उपयोग करने के लिए आवश्यकता को समझते हैं:java.sql.Timestamp का उपयोग वास्तविक java.util के रूप में कैसे करें। जेपीए
@Temporal(TIMESTAMP)
@Column(name="DATE_COLUMN", nullable = false)
@Override public java.util.Date getDate() { return this.date; }
लेकिन अगर मैं java.util.Date का एक और उदाहरण के लिए इस तिथि तुलना नहीं कर सकते, जब तक कि मैं ध्यान बराबरी के आदेश करने के लिए (भुगतान) कॉल , क्योंकि this.date
उदाहरण एक java.sql.Timestamp है। जेपीए से java.util.Date कैसे प्राप्त करें? क्योंकि जेपीए से आने वाली तारीख, भले ही विधि हस्ताक्षर java.util.Date वास्तव में java.sql.Timestamp का एक उदाहरण है।
java.util.Date newDate = new Date(this.date.getTime());
this.date.equals(newDate) == false
newDate.equals(this.date) == true
मैं दृढ़ता कक्षा में मेरी विधि को संशोधित करने की कोशिश कर दिया है:
@Override
public Date getDate() {
return this.date == null ? null : new Date(this.date.getTime());
}
यह काम कर रहा है, लेकिन यह डेटा के बहुत सारे के साथ कुशल नहीं है।
मैं अपने हठ वर्ग के डिजाइन को संशोधित कर सकता है, क्रम में persited तारीख से एक java.util.Date बनाने के लिए के बाद मैं इसे पुनः प्राप्त
@PostLoad
का उपयोग कर:अन्य विकल्प हैं।
मुझे आश्चर्य है कि मुझे
ClassTransformer
का उपयोग करके कोई परिणाम नहीं मिल सकता है?
क्या आपने कभी इस समस्या का सामना किया है? मैं सही ढंग से क्या नहीं करता? इस समस्या को संभालने का सबसे अच्छा तरीका क्या है?
मुझे इस समस्या का बहुत बुरा संस्करण था जहां यह स्प्रिंग सिक्योरिटी की नमक तुलना खराब हो गई। स्पष्ट रूप से नमक के लिए एक sql.timestamp दिनांक संस्करण का उपयोग करने से उपयोग करने से भिन्न परिणाम मिलता है। दिनांक – Marc