Monday, 15 June 2015

hibernate - Grails- Assigning associated domain objects into List vs ArrayList -


मुझे इस संबंध हैं:

  उपयोगकर्ता {... 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