[英]Grails/Hibernate Cache unpredictable
当我真的尝试了所有方法后,我才求助于StackOverflow,但我只是想不出如何解决这个问题。 复制非常容易,基本上我有一个表(基本上只是保存设置的键/值表)。
class SystemSetting {
Group settingGroup
String key
String value
String label
String type
Date lastUpdated
Date dateCreated
}
我有一个简单的控制器,可让我更新这些设置(@Transactional批注)并在保存时更新“ flush:true”。
现在,可以说,一旦做出更改,我就将选项从true设置为false(或任何更改),它不会反映在其他进程/会话上。
读取设置的代码如下:
SystemSetting setting = SystemSetting.find("FROM SystemSetting ss WHERE ss.settingGroup = :group AND ss.key = :key",
[group: group, key: key]
);
因此,例如,在浏览器A)中,我更新了一个设置。 在浏览器B(或curl)中,当我查看/访问此设置时,它仍然具有旧值。
我已禁用所有已知的缓存:
hibernate {
cache.use_second_level_cache = false
cache.use_query_cache = false
cache.region.factory_class = 'org.hibernate.cache.ehcache.EhCacheRegionFactory' // Hibernate 4
singleSession = true // configure OSIV singleSession mode
flush.mode = 'manual' // OSIV session flush mode outside of transactional context
}
grails.hibernate.cache.queries = false
但是这些结果仍然很容易重复。 什么/为什么/在哪里缓存此选项,以及如何使其无效?
确实,这不会让我感到内在的温暖,因为如果我不确定从数据库中将要输出什么数据,则会产生很多问题:(
使用Grails 2.5.1(并在2.4.4上进行测试,结果相同)。
更新:
我已经能够在一个全新的应用程序中复制它。
可在此处找到应用程序: https : //github.com/donald-jackson/grails-async-error-demo
复制:
此问题已报告给Grails问题,并已在Grails 2.5.2中修复。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.