का उपयोग कर निम्नलिखित जेपीए क्वेरी में जेपीए क्वेरी में एक नामित पैरामीटर के रूप में सूची,:TopLink
@NamedQuery(name = "SortTypeNWD.findByFcIds", query = "SELECT s FROM SortTypeNWD s WHERE s.sortTypeNWDPK.fcId IN (:fcIds)")
काफी तार्किक, यह क्या किया जाता है जब यह है: fcIds पैरामीटर का नाम पूर्णांक मानों की सूची होने की जरूरत है नामित क्वेरी कहा जाता है:
Query findByDatesPlFcIds = em.createNamedQuery("SortTypeNWD.findByFcIds");
findByDatesPlFcIds.setParameter("fcIds", fcIds);
कहाँ चर fcIds पूर्णांकों युक्त एक ArrayList है।
उपरोक्त सभी कोड हाइबरनेट साथ ठीक काम करता है लेकिन TopLink साथ नहीं करता है:
Caused by: java.lang.IllegalArgumentException: You have attempted to set a value of type class java.util.ArrayList for parameter fcIds with expected type of int from query string SELECT s FROM SortTypeNWD s WHERE s.sortTypeNWDPK.fcId IN (:fcIds).
वहाँ TopLink में एक नामित पैरामीटर के रूप में एक सूची का उपयोग करने के एक समाधान है? नामित पैरामीटर के प्रकार को मजबूर किया जा सकता है?
नामित क्वेरीज़ में शामिल करने के लिए कौन सा उज्ज्वल विचार था और नेट नामांकित क्वेरी नहीं? मैं यह पता लगाने की कोशिश कर रहा था कि मेरी क्वेरी क्यों काम नहीं करेगी, दो घंटों की खोज कर रही थी। – SoftwareSavant