【发布时间】:2012-07-26 09:33:49
【问题描述】:
我想使用 grails 1.3.7 将两个特定域类的实例列表相交。
问题是,一个列表的实例是由 javasisst 创建的,因此交集的结果总是一个空列表。
这是我的域名:
class User {
...
static hasMany = [foos : Foo]
...
}
class Foo {
...
static hasMany = [bars : Bar]
...
}
class Bar {
...
static hasMany = [localizedTitles : LocalizedTitle]
...
}
我得到用户的所有Bar 实例的列表,如下所示:
def allBarsOfUser = userInstance.foos.bars.flatten()
并尝试与另一个Bar 实例列表相交:
def intersectedBars = bars.intersect(allBarsOfUser)
问题是,allBarsOfUser 的元素类型是 Bar_$$_javassist_139 和 bars 的元素类型是 Bar,所以 intersectedBars 总是 []。
我通过执行以下操作解决了我的问题 - 但我不喜欢这个解决方案:
def allBarsOfUser = userInstance.foos.bars.flatten().collect{Bar.get(it.id)}
什么是更好的解决方案?
我怎样才能将Bar_$$_javassist_139 转换为Bar 以便intersect() 正常工作?
【问题讨论】:
标签: grails grails-orm