سؤال

تحتوي كائنات ItemTag على كائن عنصر وكائن علامة. (هذه هي كائنات مجال Java.)

هذا الاستعلام البسيط يعمل كما هو متوقع. أعود إلى قائمة إشراف قائمة ويمكن أن تفعل كل الأشياء الرائعة التي من المفترض أن تفعلها itemdags:

def theTags1 = ItemTag.findAll("from ItemTag  b")

علي سبيل المثال:

println(theTags1[0].tag.tag)

يعطيني هذا كما هو متوقع:

Pilgrim's Progress

ومع ذلك، بمجرد إضافة جدول آخر إلى المعايير، بدلا من الحصول على قائمة من ItemTags، أحصل على قائمة بالكائنات العامة.

على سبيل المثال ما يلي

def theTags2 = ItemTag.findAll("from ItemTag  b, Tag a where b.tag= a")

theTags2.each {
     theClass = it.getClass();
     nameOfClass = theClass.getName();
     println(nameOfClass)
}   

عائدات

[Ljava.lang.Object;
[Ljava.lang.Object;
[Ljava.lang.Object;

ولا يمكنني استخدام الكائنات الناتجة على الإطلاق. علي سبيل المثال:

println(theTags2[0].tag.tag)

يعطيني هذا الخطأ:

Exception evaluating property 'tag' for java.util.ArrayList, Reason: groovy.lang.MissingPropertyException: No such property: tag for class: java.lang.String

و

def exTag2 = (ItemTag) theTags2[0]

يعطيني هذا الخطأ:

Cannot cast object '[Ljava.lang.Object;@2d81f' with class '[Ljava.lang.Object;' to class 'org.maflt.flashlit.pojo.ItemTag'

ماذا أحتاج أن أفعل للحصول على كائنات قابلة للاستخدام؟ شكرا!

هل كانت مفيدة؟

المحلول

في السبات،

"from ItemTag b, Tag a where b.tag= a"

الاستعلام هو الانضمام عبر. نتيجة هذا الاستعلام هو قائمة صفائف الكائنات حيث العنصر الأول هو مثيل ItemTag والثاني هو مثيل علامة.

عليك أن تستخدم على سبيل المثال

(ItemTag) theTags2[0][0]

للوصول إلى مثيل Itemtag الأول.

نصائح أخرى

على افتراض أنك تحاول فقط الحصول على كائن ItemTag، يمكنك أيضا تغيير HQL إلى شيء مثل:

def theTags2 = ItemTag.findAll("select b from ItemTag  b, Tag a where b.tag= a")

هذا يخبره أنك تريد كائن واحد فقط. يجب أن تكون قادرا أيضا على استخدام حالة الانضمام وأعتقد شيئا مثل:

def theTags2 = ItemTag.findAll("from ItemTag b where b.tag is not null")
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top