我开始研究使用Spring和Hibernate的Grails项目。当我使用以下代码更改数据库中的条目时会出现问题
class AlarmsController implements UserAware {
def saveAlarm() {
def user = DeviceUser.findById(id)
user.field = value
user.save(failOnError: true, flush: true)
render serialize(user) as JSON <%-- not relevant --%>
}
}
其中field
,id
和value
是我不存在且不重要的一些变量。事物被保存在数据库表DeviceUser
中,我可以通过手动连接到数据库并执行SELECT
语句来检查。现在问题出现了,当我访问映射到方法localhost:8080/api/devices/1234
的{{1}}时:
show(id)
结果不会刷新(也是在执行硬刷新后,即class DeviceUserController implements UserAware {
def show(id) {
def deviceUser = DeviceUser.where({
id = id,
device = device
}).get()
render serialize(deviceUser) as JSON
}
}
)。我认为内容正在缓存,确实如此,但是当我搜索问题时,CTRL + F5
应该阻止在下次调用时获取缓存的内容。
flush: true
是一种将serialize(content)
转换为JSON映射的类方法。
我尝试了content
之类的不同内容,但没有任何效果。我还尝试将evict(DeviceUser)
设置为user.field
后重新启动计算机(0
localhost:8080/api/devices/1234
始终显示为设置为user.field
),但它仍然执行了不更改(值仍为1
,但在数据库中为1
)。
答案 0 :(得分:0)
问题已经解决了。看评论。问题不在缓存中,而是在从数据库打印整个表后成功调试的一些奇怪的数据库布局中。