2015-11-19 15 views
5
में

मैं सिर्फ EclipseLink को Toplink से उन्नत बनाया और इस त्रुटि के लिए में चला रहा हूँEclipseLink - अमान्य क्वेरी कुंजी [latestVersionFlag] अभिव्यक्ति

अपवाद [EclipseLink-6015] (ग्रहण हठ सेवाएं - 2.6.1.v20150916-55dc7c3) : org.eclipse.persistence.exceptions.QueryException अपवाद विवरण: अभिव्यक्ति में अमान्य क्वेरी कुंजी [नवीनतम VersionFlag]। प्रश्न: ReadAllQuery (नाम = "bookingVersionCollection" referenceClass = BookingVersion)

मेरे वर्णनकर्ता लगता है कि यह

OneToManyMapping bookingVersionCollectionMapping = new OneToManyMapping(); 
bookingVersionCollectionMapping.setAttributeName("bookingVersionCollection"); 
bookingVersionCollectionMapping.setReferenceClass(BookingVersion.class); 
bookingVersionCollectionMapping.useTransparentCollection(); 
bookingVersionCollectionMapping.useCollectionClass(IndirectList.class); 
bookingVersionCollectionMapping.addAscendingOrdering("bookingVersionID"); 
bookingVersionCollectionMapping.addTargetForeignKeyFieldName("RS_BOOKINGVERSION.RS_BKG_ID", "RS_BOOKING.RS_BKG_ID"); 
bookingVersionCollectionMapping.setSelectionCriteria(bookingVersionCollectionMapping.buildSelectionCriteria() 
    .and(expBuilder.get("latestVersionFlag").equal(ResConstants.FLAG_YES))); 
descriptor.addMapping(bookingVersionCollectionMapping); 

मैं भी उस क्षेत्र

DirectToFieldMapping latestVersionFlagMapping = new DirectToFieldMapping(); 
latestVersionFlagMapping.setAttributeName("latestVersionFlag"); 
latestVersionFlagMapping.setFieldName("RS_BOOKINGVERSION.LATESTVERSIONFLAG"); 
descriptor.addMapping(latestVersionFlagMapping); 
के लिए मानचित्रण है कि BookingVersion वर्ग के लिए एक मानचित्रण है

और BookingVersion.java के जावा पोको ऑब्जेक्ट के अंदर है कि क्षेत्र इस तरह दिखता है ..

private char latestVersionFlag = ResConstants.FLAG_YES; 

कोई विचार? यह कोड टॉपलिंक में काम करता है, इसलिए सुनिश्चित नहीं है कि क्या हो रहा है।

+0

जब आप बुकिंग VersionCollectionMapping जोड़ रहे हैं, और अपवाद कहां से फेंक दिया जा रहा है? मैं अनुमान लगा रहा हूं, लेकिन बुकिंग में सेट अभिव्यक्ति की तरह लगता है VersionCollectionMapping को सब कुछ पूरा होने से पहले संसाधित किया जाता है, और नवीनतम VersionFlagMapping में अभी तक कोई क्वेरी कुंजी नहीं है। आपको डिस्क्रिप्टर कस्टमाइज़र का उपयोग करके बुकिंग संस्करण चयन चयन करने की आवश्यकता हो सकती है, ताकि यह सबकुछ संसाधित हो जाने के बाद जोड़ा जा सके – Chris

+0

क्या आप पूर्ण स्टैकट्रैक जोड़ सकते हैं (यदि आपके पास अभी भी है) ताकि पाठक इसे अन्य प्रश्नों से तुलना कर सकें और EclipseLink मुद्दों। इस पर चर्चा की जा सकती है https://bugs.eclipse.org/bugs/show_bug.cgi?id=466581। –

उत्तर

1

खैर,

bookingVersionCollectionMapping.setSelectionCriteria(bookingVersionCollectionMapping.buildSelectionCriteria() 
    .and(expBuilder.get("latestVersionFlag").equal(ResConstants.FLAG_YES))); 

बदलते

bookingVersionCollectionMapping.setSelectionCriteria(bookingVersionCollectionMapping.buildSelectionCriteria() 
     .and(expBuilder.getField("RS_BOOKINGVERSION.LATESTVERSIONFLAG").equal(ResConstants.FLAG_YES))); 

करने से काम करने लगता है ..... अभी भी यकीन नहीं क्यों, लेकिन मैं किसी और के लिए पोस्ट होगा सोचा!

+0

धन्यवाद! हमने 2.5.2 से 2.6.1 eclipselink में अपग्रेड किया था और इस त्रुटि के साथ अंतःस्थापित विफलताओं का सामना कर रहा था। विधि प्राप्त करने के बजाय GetField का उपयोग करके इसे हल किया गया। – agradl

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