背景:使用Hibernate5,ehcache开启查询和二级缓存。
需求:每条记录新增自动设置创建时间,记录新增不设更新时间;修改记录自动设置更新时间;修改记录创建时间不变;。我使用如下实体注解配置(省略get、set):
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/**
* 创建时间
*/
@Temporal(TemporalType.TIMESTAMP)
@CreationTimestamp
@Column(name = "CREATIONTIME", nullable=false,updatable = false)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date creationTime;
/**
* 修改时间
*/
@Temporal(TemporalType.TIMESTAMP)
@UpdateTimestamp
@Column(name = "MODIFIEDTIME", nullable = true,insertable=false)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date modifiedTime;
出现的奇怪问题:当保存成功后,数据库中creationTime为当前时间、modifiedTime为null ,达到要求。
但当进行第二次实体查询(从缓存查询)发现字段modifiedTime居然返回有值并不是null,但数据库该字段值确定是null,返回居然是当前时间值。在不使用缓存查询的情况下是正常的。请问大家有没有遇到类似的问题,怎么解决?
数据库:
不使用缓存查询结果正常:
?
1
{"creationTime":"2016-03-31 21:36:33","modifiedTime":null,"id":1}
使用缓存查询结果不正常:
?
1
{"creationTime":"2016-03-31 21:36:33","modifiedTime":"2016-03-31 21:36:33","id":1}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。