2009-06-07 11 views
5

का उपयोग करते हुए एक जावा ऑब्जेक्ट में ओरेकल दिनांक मैपिंग करना मुझे संदेश मिलता है "शाब्दिक प्रारूप स्ट्रिंग से मेल नहीं खाता"।हाइबरनेट

public String getDateTime(); 
public void setDateTime(String date_time); 

यहाँ जाता है कि वर्ग के लिए हाइबरनेट कॉन्फ़िग फ़ाइल से मानचित्रण:

<property name="dateTime" column="date_time"> 

और यहाँ उस के लिए DDL है

उदाहरण के लिए, यहाँ एक जावा वर्ग से कुछ तरीके हैं कॉलम:

CREATE TABLE "SCHEMA"."TABLE_NAME" 
    ( 
    "DATE_TIME" DATE, 
    etc. 
    ) 

मैंने टाइप = "डेट" और "टाइमस्टैम्प" (एक ही समय में नहीं) सेटिंग की कोशिश की हाइबरनेट कॉन्फ़िगरेशन में संपत्ति पर attr, और उसके बाद जावा प्रकार को स्ट्रिंग से दिनांक में बदल रहा है, लेकिन इससे मुझे एक अलग त्रुटि मिली। मैंने पैरामीटर को बाध्य करने के बारे में कुछ पढ़ा लेकिन उस के सिर या पूंछ नहीं बना सका।

जब मैं कॉन्फ़िगर से उस संपत्ति को टिप्पणी करता हूं तो बाकी सब कुछ काम कर रहा है, इसलिए मुझे यकीन है कि यह मेरी समस्या है। कष्टप्रद बात यह है कि मेरे पास एक ही ओरेकल डेट-> जावा स्ट्रिंग मैपिंग के साथ एक और टेबल/क्लास मैपिंग है जो मुझे यह समस्या नहीं देती है।

उत्तर

8

ऑर्कल तिथि कॉलम को प्रतिबिंबित करने के लिए आप Java.util डेट क्लास का उपयोग करके संपत्ति के रूप में बेहतर होगा।

Class blah{ 
private Date dateTime; 

public Date getDateTime(); 
public void setDateTime(Date dateTime); 

blah(){} 

} 

जब आप जावा क्लास प्रॉपर्टी के रूप में दिनांक का उपयोग करते थे तो त्रुटि क्या थी?

+0

गुह। मुझे नहीं लगता कि मैंने पहली बार स्ट्रिंग विधि पैरामीटर से स्ट्रिंग विधि पैरामीटर को बदल दिया है। गूंगा महसूस कर रहा है, क्योंकि यह इस बार घड़ी की तरह काम करता था। –

+2

यह केवल तभी काम करता है जब आप मैपिंग प्रॉपर्टी में "टाइप" विशेषता शामिल नहीं करते हैं: <संपत्ति का नाम = "डेटटाइम" कॉलम = "डेट_टाइम"> यदि आप या तो "दिनांक" या "टाइमस्टैम्प" के मान के साथ प्रकार शामिल करते हैं "यह मूल्यों को सटीक रूप से परिवर्तित नहीं करेगा। तो निम्नलिखित बीएडी है: <संपत्ति का नाम = "डेटटाइम" कॉलम = "डेट_टाइम" टाइप = "दिनांक"> यहां एक लिंक है जो यह समझाता है कि यह क्यों सच है: http://fishbowl.pastiche.org/2005/07/13/hibernate_oracle_and_dates_a_story/और यहां समाधान का वर्णन करने वाला एक लिंक है: http://www.enavigo.com/2007/10/20/mapping-hibernate-to-oracle-date-fields/ –

2

आपकी तिथि का प्रकारटाइम विशेषता टाइमस्टैम्प या तिथि होनी चाहिए, जो स्वचालित रूप से ओरेकल दिनांक/समय को परिवर्तित करनी चाहिए। मुझे स्ट्रिंग के रूप में तारीख रखने की बात नहीं दिख रही है क्योंकि आपको स्वरूपण शामिल करना है।