मैंने नीचे दिखाए गए विरासत के साथ Grails में अपने डोमेन कक्षाओं का मॉडल किया है।Grails/Groovy डोमेन क्लासेस विरासत कास्ट
abstract class Profile{
}
class Team extends Profile{
}
class User extends Profile{
}
class B{
static hasMany = [profiles: Profile]
}
नियंत्रकों जब मैं कक्षा बी कुछ स्थितियों में मैं प्रोफाइल के कुछ दल या उपयोगकर्ता के लिए करने के लिए कास्ट करना चाहते से सभी प्रोफाइल पाने में बाद में, लेकिन मुझे नहीं क्योंकि मैं एक जावा मिल सकती है। lang.ClassCastException या GroovyCastException, हालांकि वे किसी टीम या उपयोगकर्ता के रूप में सहेजे जाते हैं (डेटाबेस में विशेषता वर्ग के साथ)।
def team1 = b.profiles.toList()[0] as Team
def team1 = (Team)b.profiles.toList()[0]
यह काम कर रहा है जब मैं के रूप में यह एक गतिशील भाषा में सामान्य है किसी भी प्रकार की बस के लिए इसका इस्तेमाल नहीं लिखते: यहाँ तरीके मैं कोशिश की है कर रहे हैं।
def team1 = b.profiles.toList()[0]
लेकिन तब मैं कभी नहीं जानता कि मैं किस वर्ग का उपयोग कर रहा हूं। क्या माता-पिता वर्ग को बच्चे को डालने के लिए ग्रोवी या गोर में वैसे भी है?
वहाँ GORM 'के बीच चयन करने के लिए कोई [discriminator] है (http://grails.org/doc/latest/ref/Database%20Mapping/discriminator.html) उपयोगकर्ता 'या' टीम '। गोरम को कैसे तय करना चाहिए कि किस कार्यान्वयन का उपयोग करना है? – krock
यह क्लास विशेषता के साथ डेटाबेस में एक ही तालिका में सहेजता है जो इंगित करता है कि यह कौन सा वर्ग है। – sgleser87