2010-05-26 15 views
5

एक मेज के साथ करने के लिए रिफैक्टरिंग इस एसक्यूएलजावा: जेपीए कक्षाएं, दिनांक से दिनांक समय

Create Table X (
    ID varchar(4) Not Null, 
    XDATE date 
); 

और एक इकाई वर्ग तो

@Entity 
@Table(name = "X") 
public class X implements Serializable { 
    @Id 
    @Basic(optional = false) 
    @Column(name = "ID", nullable = false, length = 4) 
    private String id; 
    @Column(name = "XDATE") 
    @Temporal(TemporalType.DATE) 
    private Date xDate; //java.util.Date 
    ... 
} 
ऊपर के साथ

तरह परिभाषित का उपयोग करके बनाए, मैं करने के लिए उपयोग कर सकते हैं जेपीए ऑब्जेक्ट रिलेशनल मैपिंग प्राप्त करें। हालांकि, xDate विशेषता केवल तिथियां संग्रहीत कर सकती है, उदा। dd/MM/yyyy

मैं उपरोक्त को एक फ़ील्ड का उपयोग करके पूर्ण दिनांक वस्तु को स्टोर करने के लिए कैसे प्रतिक्रिया करता हूं, यानी dd/MM/yyyy HH24:mm?

उत्तर

4

क्या आपने @Temporal मान TemporalType.DATETIME पर बदलने की कोशिश की है? java.util.Date और java.sql. दोनों स्टोर दिनांक और समय घटकों को डेट करें, टेम्पोरल टाइप नियंत्रण जो जेपीए संग्रहीत/ध्यान देता है; तिथि, समय, या दोनों।

+0

@sblundy: उत्तर के लिए धन्यवाद, यह मेरा आंत महसूस भी था, हालांकि, क्या मुझे अपनी इकाई वर्ग में सदस्य चर या तालिका के लिए स्कीमा परिभाषा को बदलने की आवश्यकता है? – bguiz

+0

@bguiz: फील्ड नंबर, कॉलम हां। यह इस बात पर निर्भर करता है कि आप किस डीबी का उपयोग कर रहे हैं, लेकिन DATETIME को – sblundy

+0

@sblundy काम करना चाहिए: मैं टॉपलिंक/जावाडीबी – bguiz

7

आप भी डेटाबेस के स्तर पर समय की जानकारी स्टोर करने के लिए चाहते हैं, TemporalType.DATETIME का उपयोग करें:

@Column(name = "XDATE") 
@Temporal(TemporalType.DATETIME) 
private Date xDate; //java.util.Date 

डेटाबेस स्तर पर एक TIMESTAMP स्तंभ प्रकार का उपयोग करें (और xDate'yyyy-MM-dd HH:mm:ss.S' के रूप में जमा किया जाएगा)।

+0

+1 @ पास्कल थिवेंट का उपयोग कर रहा हूं: उत्तर के लिए धन्यवाद, आप दोनों सही थे, लेकिन मैं पहली बार में से पहले से ही sblundy को चेक दे रहा हूं। – bguiz

+0

@ bguiz निश्चित रूप से, कोई समस्या नहीं! –

+3

हाय। मैं 'एक्लिप्ससेंक' के साथ जेपीए का उपयोग कर रहा हूं, और 'टेम्पोरल टाइप' में केवल 'DATE', 'TIME', और' TIMESTAMP' विकल्प है, और' DATETIME' नहीं है। क्या मुझे 'TIMESTAMP' या' TIME' का उपयोग करना चाहिए। –

संबंधित मुद्दे