मैं उस ऑब्जेक्ट पर एक बुलियन संपत्ति द्वारा 'हटाए गए' चिह्नित वस्तुओं को निकालने के लिए Hibernate में @Where
एनोटेशन का उपयोग करना चाहता हूं। उदाहरण के लिए निम्नलिखित हाइबरनेट लोड करता है से किसी भी नष्ट कर दिया पते नहीं करना चाहिए:क्या हाइबरनेट को @Where एनोटेशन में बूलियन अक्षरों को दूषित करने से रोकने का कोई तरीका है?
@OneToMany(mappedBy="contact")
@Where(clause="deleted=FALSE")
private Set<Address> addresses;
हालांकि जब मैं deleted=FALSE
की तरह एक खंड का उपयोग तो हाइबरनेट एक तालिका नाम है, जो करने के लिए क्वेरी का कारण बनता है के साथ लगाकर द्वारा बूलियन शाब्दिक वध करना होगा असफल। उदाहरण के लिए:
select ... from address address0_ where (address0_.deleted=address0_.FALSE) and address0_.contact_id=?
मैं क्या उम्मीद (address0_.deleted=FALSE)
बजाय (address0_.deleted=address0_.FALSE)
की तरह कुछ है।
क्या @Where क्लॉज निर्दिष्ट करने या बूलियन मान को सही ढंग से आउटपुट करने के लिए हाइबरनेट को कॉन्फ़िगर करने का कोई तरीका है?
पीएस।
@Where(clause="deleted='FALSE'")
(address0_.deleted='FALSE')
करने के लिए परिवर्तित हो जाएगी कि जिसमें बस ठीक काम करता है, उदाहरण के लिए, PostgreSQL: ध्यान दें कि यह कुछ डेटाबेस के साथ संभव है एक स्ट्रिंग इस तरह शाब्दिक रूप में बूलियन मान निर्दिष्ट करने के लिए। हालांकि मैं इस परियोजना के लिए एचएसक्यूएलडीबी का उपयोग कर रहा हूं, और एचएसक्यूएलडीबी बुलियन स्ट्रिंग अक्षर का समर्थन नहीं करता है। HSQL पर मैं जब deleted='FALSE'
का उपयोग कर निम्न अपवाद प्राप्त करें:
org.hsqldb.HsqlException: data exception: invalid character value for cast
क्या आपको हाइबरनेट सेटअप में एचएसक्यूएलडीबी डायलेक्ट निर्दिष्ट करना याद आया? – Affe
हां, मैं 'org.hibernate.dialect.HSQLDialect' का उपयोग कर रहा हूं और मैंने दोबारा जांच की है कि हाइबरनेट वास्तव में इसका उपयोग कर रहा है। – gutch