gpt4 book ai didi

hibernate - Grails/hibernate 标准ID inList

转载 作者:行者123 更新时间:2023-12-02 03:59:31 25 4
gpt4 key购买 nike

这个问题是基于我问的here。相同的关系和相同的目标。我有一个Thing实例。我想获取与Bar的所有实例相关联的Foo的所有实例,这些实例与我拥有的Thing实例相关联。

我的模型中有一个方法可以根据某些条件返回对象列表。

class Foo {

static List findAllAssociatedWith( Object obj ) {
def results = null
if( obj instanceof Bar) {
results = Foo.withCriteria() {
bars{
//inList( "id", Thing.bars.id ) // this does not work
inList( "id", [new Long(3), new Long(4)] ) // this works
}
}
}
return results
}
}
Thing.bars.id返回我要检查的id的列表,但是显然它是一个ArrayList of Integers,即使需要Longs。这是我得到的错误:
java.util.ArrayList cannot be cast to java.lang.Long. Stacktrace follows:
Message: java.util.ArrayList cannot be cast to java.lang.Long

为什么Thing.bars.id返回一个Integer列表而不是Longs列表,我该如何解决?

更新:

我在调用 println Things.bars.id后发现了问题。我希望它返回一个数字的ArrayList(整数或长整数),如下所示:
[3,4]

但是我得到了一个ArrayLists的ArrayList,其中第一个数组列表是我想要的,而第二个数组列表是一个空列表,如下所示:
[ [ 3, 4 ], [] ]

不确定为什么Grails会这样做,但是现在解决这个问题的一种简单方法是 Thing.bars.id.get( 0 )

最佳答案

泛素细菌,您可以通过使用flatten方法将数组数组展平为简单数组
Thing.bars.id.flatten()

您的[[3,4],[]]变成[3,4]

关于hibernate - Grails/hibernate 标准ID inList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11124686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com