开发者社区> 问答> 正文

请大神解啊 hibernte @UpdateTimestamp自动设置更新时间出现的奇怪问题!请高手解答。

背景:使用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}

展开
收起
爵霸 2016-02-29 16:50:18 6903 0
0 条回答
写回答
取消 提交回答
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
面向失败设计 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载