मुझे इस संबंध हैं:
उपयोगकर्ता {... hasMany = [tags: टैग ]} टैग {...}
कुछ जहां मेरी सेवा में मुझे यह कोड है:
सूची & lt; टैग & gt; टैग = user.tags
लेकिन यह काम नहीं करता है, मुझे यह त्रुटि मिल रही है:
org.codehaus.groovy.runtime.typehandling .GroovyCastException: वर्ग 'org.hibernate.collection.PersistentSet' से वर्ग 'java.util.List' के कारण ऑब्जेक्ट '[com.app.ext.Tag: 1]' कास्ट नहीं कर सकता: groovy.lang.GroovyRuntimeException: नहीं किया जा सका ConsoleScript15.run पर (joom.util.List) com.appil.List (com.app.ext.Tag) के लिए मिलान कन्स्ट्रक्टर खोजें:
यदि मैं अपना कोड बदलता हूं:
ArrayList & LT; टैग & gt; टैग = user.tags
यह अपेक्षित रूप में काम करता है! हालांकि ArrayList
उप कोड है सूची
। कोई भी स्पष्टीकरण?
Grails संस्करण: 2.3.0
ग्रोवी की एक नज़र डालें।
जब आप कास्ट करने का प्रयास करते हैं तो वह संग्रह होता है, उस प्रकार के कन्स्ट्रक्टर जिसे आप डालना चाहते हैं, इसलिए, ArrayList
के लिए यह निहित है:
ArrayList & lt; Tag & gt; टैग = नया अर्रेइलाइट (उपयोगकर्ताटैग)
सूची
के लिए ऐसा कुछ होगा नई सूची (users.tags)
जो है सूची
इंटरफ़ेस के बाद से गलत है।
नीचे स्निपेट एक ही समस्या दिखाता है:
सेट करें & lt; स्ट्रिंग & gt; MySet = नया हैशसेट & lt;> (['A', 'B']) ArrayList & lt; स्ट्रिंग & gt; MyList = mySet; // काम ठीक है सूची & lt; स्ट्रिंग & gt; MyList = mySet; // GroovyCastException के साथ विफल होता है
लेकिन आप स्पष्ट रूप से ArrayList
पर डालें:
सूची & lt; स्ट्रिंग & gt; MyList = mySet के रूप में ArrayList;
No comments:
Post a Comment