2015-01-29 9 views
20

में डिफ़ॉल्ट बूलियन मान सेट करने के लिए कैसे मैं एक विशेषताजेपीए

private boolean include; 

मैं, सच को उसके डिफ़ॉल्ट मान सेट करने के लिए इतना है कि डेटाबेस में यह डिफ़ॉल्ट रूप से यह सच है प्रदर्शित करना चाहिए चाहते हैं। क्या यह जेपीए में संभव है?

+0

आप डिफ़ॉल्ट मान को बदलने के लिए असाइनिंग का उपयोग कर सकते हैं। सेटर सेटर विधि और सही मान सेट करें। –

+6

'निजी बुलियन में = सत्य शामिल है; 'जावा पर काम करेगा। फिर भी, आपको यह सुनिश्चित करना होगा कि आपके डेटाबेस में 'बूलियन' फ़ील्ड के लिए प्रत्यक्ष समर्थन है या यदि आपको कनवर्टर का उपयोग करना है। –

+0

क्या आप निम्नलिखित के साथ प्रयास कर सकते हैं? कॉलम (नाम = "शामिल करें") निजी बूलियन में = सत्य शामिल है; –

उत्तर

35

जहां तक ​​मैं भी जाना जाता है वहाँ डिफ़ॉल्ट मान प्रदान करने के लिए कोई जेपीए देशी समाधान है। यहाँ यह मेरी वैकल्पिक हल आता है:

गैर डेटाबेस पोर्टेबल समाधान

@Column(columnDefinition="tinyint(1) default 1") 
private boolean include; 

जावा उन्मुख समाधान

private boolean include = true; 

जावा उन्मुख प्लस बिल्डर पैटर्न

 @Column(nullable = false) 
    private Boolean include; 
    ... 
    public static class Builder { 
     private Boolean include = true; // Here it comes your default value 
     public Builder include (Boolean include) { 
     this.include = include ; 
     return this; 
    } 
    // Use the pattern builder whenever you need to persist a new entity. 
    public MyEntity build() { 
     MyEntity myEntity = new MyEntity(); 
     myEntity .setinclude (include); 
     return myEntity; 
     } 
... 
} 

यह मेरा पसंदीदा और कम घुसपैठिया है। असल में यह आपकी इकाई में बिल्डर पैटर्न में डिफ़ॉल्ट मान को परिभाषित करने के लिए कार्य को प्रतिनिधि करता है।

+0

इसके अलावा '@ कॉलम (कॉलमडिफिनिशन =" बुलेन डेफॉल्ट झूठा ") 'कई डेटाबेस के लिए काम करेगा पोस्टग्रेएसक्यूएल। – youhans

+0

कोई विचार क्या जेपीए समिति डेवलपर्स की सिफारिश करता है? –

0

आप हमेशा एनोटेशन @PreUpdate या @Prepersist पर विधि का उपयोग कर सकते हैं जहां आप अपडेट करेंगे या डीबी में सहेजने से पहले क्या किया जाना चाहिए।

या बस सेटअप मूल्य private boolean include = true;

2

आकार 1 के ओरेकल प्रकार संख्या का उपयोग करके जेपीए 2.1 और Oracle 11 यह मेरे लिए काम करता है का उपयोग करना:

जावा:

CREATE TABLE "ACCOUNT"(
"ID" NUMBER(10,0) NOT NULL ENABLE, 
"NAME" VARCHAR2(255 CHAR) NOT NULL ENABLE, 
"PASSWORD" VARCHAR2(255) NOT NULL ENABLE, 
"ENABLED" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE, 
PRIMARY KEY ("ID") 
); 
0

मैंने:

@Column(name = "ENABLED", nullable = false) 
private boolean enabled = true; 

एसक्यूएल स्क्रिप्ट बनाएं पाया गया कि कन्स्ट्रक्टर में जोड़ना डिफ़ॉल्ट नई इकाइयों के लिए एक मूल्य पर एक अच्छा कामकाज है:

public EntityName(){ 
    this.fieldToDefault = default; 
} 
0
private boolean include = true; 
+0

हाय कोड को पेस्ट करने के बजाय अपने कोड रेटर को संदर्भ देने के लिए कुछ स्पष्टीकरण जोड़ने का प्रयास करें। यद्यपि यह आपके लिए सही मायने रख सकता है, यह समझाना बेहतर होगा। –