में विफल होने के लिए जेनरेट किया गया है। मैं नए जेपीए 2.0 मानदंड एपीआई का पहली बार उपयोगकर्ता हूं और जब मैं तुलना करने के लिए स्ट्रिंग में नंबर फ़ील्ड डालना चाहता हूं तो मैं एक समस्या में भाग रहा हूं यह एक स्ट्रिंग पैरामीटर के साथ। कारण यह है कि मैं आंशिक संख्याओं की खोज करना चाहता हूं, इसलिए मैं मानदंडबिल्डर पर 'जैसे' का उपयोग करता हूं। यहाँ एक कोड नमूना है:जेपीए 2.0 मानदंड एपीआई और कास्ट कारणों का उपयोग जेपीक्यूएल को हाइबरनेट
CriteriaBuilder cb = getEntityManager().getCriteriaBuilder();
CriteriaQuery<ParcelDO> cq = cb.createQuery(ParcelDO.class);
Root<ParcelDO> parcelDO = cq.from(ParcelDO.class);
cq.select(parcelDO);
String parcelNumberId = parcelSearchDetailDO.getParcelNumberId();
if (parcelNumberId != null && !parcelNumberId.isEmpty()) {
Predicate parcelNumberIdPredicate = cb.like(
parcelDO.<Long> get("parcelNumberId").as(String.class),
parcelNumberId + "%");
if (cq.getRestriction() != null) {
cq.where(cq.getRestriction(), parcelNumberIdPredicate);
} else {
cq.where(parcelNumberIdPredicate);
}
}
महत्वपूर्ण हिस्सा
Predicate parcelNumberIdPredicate = cb.like(
parcelDO.<Long> get("parcelNumberId").as(String.class),
parcelNumberId + "%");
जहाँ मैं मानदंड एपीआई का उपयोग एक अभिव्यक्ति CriteriaBuilder पर की तरह विधि के लिए आवश्यक में पथ परिवर्तित करने के लिए है।
अब जब मैं चलाने के लिए और यह इस कोड निष्पादित करता है, अंतर्निहित जेपीए 2.0 कार्यान्वयन हाइबरनेट निम्न अपवादों के साथ विफल रहता है: हाइबरनेट की तरह एक JPQL कि सही नहीं है पैदा कर रहा है
Caused by: org.hibernate.hql.ast.QuerySyntaxException:
expecting CLOSE, found '(' near line 1, column 117
[select generatedAlias0 from domain.ParcelDO as generatedAlias0 where
cast(generatedAlias0.parcelNumberId as varchar2(255 char)) like :param0]
मेरे लिए लग रहा है।
मुझे नहीं पता कि क्या गलत है, क्या आप मदद कर सकते हैं?
मैं नवीनतम हाइबरनेट संस्करण (3.6.0.CR2)
आप
यह एक बग है, मैंने इसकी सूचना दी: http://opensource.atlassian.com/projects/hibernate/browse/HHH-5755 – axtavt
एक्स्टाव, धन्यवाद। क्या आपको अभी तक कोई कामकाज मिला है? – bruma
सबसे हल्का हाइबरनेट-इकाई प्रबंधक (रिलीज) संस्करण 3.6.0 है। अंतिम। – dira