2015-04-01 74 views
0

我正在使用Grails。我试图使用来自一个来源的值作为搜索另一个来源的方法。如何破除继承

def numbers=[]; 
//collection of Info maps 
somemaps.each{ 
    numbers.add(it.id); 
} 
//THIS IS THE LINE THAT GENERATES THE ERROR 
def info=Info.findAll("from Info as i where i.site in (:xsites)",['xsites':numbers]); 

但我得到这个错误

Subtype 'java.lang.Integer' of reloadable type myservices.Info is not reloadable: 

我怎样才能打破“数字”的信息离开的价值观,使他们不再有继承链中该类型?

+0

你有一个类型(整数)的对象。它*不能*被视为另一个*主格*类型(例如一个信息);因为那不正是它。这样做不再有效,然后像汽车一样处理一瓶番茄酱。你可以在结构上对其进行处理(也可以用鸭子的方式,尽管这种方式的用处不大),根据实际类型执行逻辑(例如,用if),将其转换为另一个值(和类型),并且某种程度上有意义,扔掉所有这些物体等。 – user2864740 2015-04-01 00:14:22

回答

1

那么,我的第一个问题是,是否有信息&网站之间的关系。如果是这样,为什么不尝试实际的标识符。如,

def info=Info.findAll("from Info as i where i.site.id in :xsites, ['xsites':numbers]"); 

或者更糟的是涉及到糟糕的是,用个createCriteria

def info=Info.createCriteria().list{ 
    site{ 
     'in' ('id', numbers) 
    } 
}