我遇到了一个问题,即在正常运行或调试时调用.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试图解决这个问题,但行为相同。