我想要做這樣的事情:是否有可能蒙上範圍
def results = Item.findAll("from Item c, Tag b, ItemTag a where c = a.item and b = a.tag and (b.tag like :q or c.uri like :q) " + ob,[q:q])
def items = (Item) results[0..1][0]
,但我得到
Cannot cast object '[Ljava.lang.Object;@1e224a5' with class '[Ljava.lang.Object;' to class 'org.maflt.ibidem.Item'
我能得到什麼,我需要這一點,但它不」牛逼看起來這是最好的解決辦法:
def items = [] as Set
def cnt = results.size()
for (i=0;i<cnt-1;i++) { items << results[i][0] }
items = items as List
UPDATE
解決方案建議使用
def results = Item.findAll("from Item c, Tag b, ItemTag a where c = a.item and b = a.tag and (b.tag like :q or c.uri like :q) " + ob,[q:q])
def items = results[0] as List
不起作用。該查詢實際上會生成正確的SQL:
select
item0_.id as id3_0_,
tag1_.id as id16_1_,
itemtag2_.id as id6_2_,
item0_.version as version3_0_,
item0_.last_updated as last3_3_0_,
item0_.docsize as docsize3_0_,
item0_.customer_id as customer5_3_0_,
item0_.uri as uri3_0_,
item0_.created_by_person_id as created7_3_0_,
item0_.updated_by_person_id as updated8_3_0_,
item0_.md5 as md9_3_0_,
item0_.original_file_name as original10_3_0_,
item0_.date_created as date11_3_0_,
item0_.doctype as doctype3_0_,
item0_.identifier as identifier3_0_,
tag1_.version as version16_1_,
tag1_.tagtype_id as tagtype3_16_1_,
tag1_.tag as tag16_1_,
tag1_.last_updated as last5_16_1_,
tag1_.customer_id as customer6_16_1_,
tag1_.created_by_person_id as created7_16_1_,
tag1_.updated_by_person_id as updated8_16_1_,
tag1_.date_created as date9_16_1_,
itemtag2_.version as version6_2_,
itemtag2_.updated_by_person_id as updated3_6_2_,
itemtag2_.weight as weight6_2_,
itemtag2_.tag_id as tag5_6_2_,
itemtag2_.item_id as item6_6_2_,
itemtag2_.last_updated as last7_6_2_,
itemtag2_.date_created as date8_6_2_,
itemtag2_.source_id as source9_6_2_,
itemtag2_.created_by_person_id as created10_6_2_
from
item item0_,
tag tag1_,
item_tag itemtag2_
where
item0_.id=itemtag2_.item_id
and tag1_.id=itemtag2_.tag_id
and (
lower(tag1_.tag) like '%english%'
or lower(item0_.original_file_name) like '%english%'
)
order by
item0_.id
但不幸的是items = results [0],因爲List不起作用。它只返回3行,只有項目[0]是一個項目。
items.each{println it.class}
給出:
class org.maflt.ibidem.Item
class org.maflt.ibidem.Tag
class org.maflt.ibidem.ItemTag
爲什麼你需要轉換爲列表?爲什麼不只是做 def items = results [0] 並正確使用? – Blacktiger 2010-03-22 22:26:00