gpt4 book ai didi

grails - Grails EH缓存对象作为参数问题

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

我想在我的grails应用程序中使用EHCache。我想使用@Cacheable缓存方法。

我正在测试这种情况:
简单测试类:

class MyTestClassB {
def a
def b

@Override
boolean equals(Object obj) {
println ("New A" + this.a)
println ("Olda A" + obj.a)
if (this.a != obj.a) {
return false
}
return super.equals(obj)
}
}

要在服务类中缓存的方法:
@Transactional
class HelpService {
@Cacheable('newcache')
def inlineCacheService(def param) {
println ("I am in the function")
MyTestClass a = new MyTestClass()
a.paramA = new Date()
a.paramB = [
id: "1",
data: "f"
]

return a
}

}

所以我在 Controller 中调用该方法:
 MyTestClassB c1 = new MyTestClassB()
c1.a = "paramc1"
render "1: " + helpService.inlineCacheService(c1).paramA
c1.a = "paramc1neu"
render "<br/>1: " + helpService.inlineCacheService(c1).paramA

在这种情况下的问题是:我更改了参数对象的值,因此我希望不会得到缓存的值。但是第二次inlineCacheService调用从缓存中读取值。这里有什么问题?我会误会吗?

最佳答案

hashCode丢失。实施后,缓存现在可以按预期工作。感谢@ rcgeorge23

关于grails - Grails EH缓存对象作为参数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33730254/

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