我遇到了一个问题,即在正常运行或调试时调用.contains()
我的一个域类的hasMany
关系不一样。情况如下:
我有 2 个域对象,A
并且B
. A
与 有hasMany
关系B
。
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
,hashCode
并compareTo
试图解决这个问题,但行为相同。