gpt4 book ai didi

Grails 域对象 hasMany 使用包含的不规则行为

转载 作者:行者123 更新时间:2023-12-02 14:15:00 26 4
gpt4 key购买 nike

我在调用 .contains() 时遇到问题在我的一个域类的 hasMany 上在正常运行或调试时,关系不一样。情况如下:

我有 2 个域对象,AB . A有一个 hasManyB 的关系.

class A {
...
static hasMany = [bees: B]
...
}

现在,在执行我的一个过滤器期间,我从 spring 安全服务中获取了我当前的用户。此用户还包含 B 的单个实例.我的过滤器应该做的是检查 B 的实例是否在用户中包含 A 的某些实例.

假设 B 的实例实际上指的是同一个对象(因为它们是)。

现在,问题出现了。来电:
if (instanceOfA.bees.contains(user.instanceOfB)) {
println 'success'
} else {
println 'failure'
}

打印 failure在正常(或不单步执行代码的调试)执行期间。但是,如果我在此处设置断点并单步执行代码,它会正确执行 contains()并打印 success .

我也实现了 equals , hashCodecompareTo试图解决这个问题,但行为相同。

最佳答案

这通常是由于延迟加载或缓存。使用instanceOfA.bees.id.contains(user.instanceOfB.id)它总是有效的。

关于Grails 域对象 hasMany 使用包含的不规则行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18597038/

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