@TableField(fill = FieldFill.UPDATE)
常規(guī)來說這個注解是加到我的update要自動更新的屬性上的赶掖。
例如:
@ApiModelProperty(value="修改人")
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime updateBy;
@ApiModelProperty(value="修改時間")
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime updateTime;
updatetime加上這個字段的目的是希望在更新的時候感猛,自動填充更新時間.
坑:
需求場景:在分頁查詢之后,修改字段“已閱人”奢赂,這個字段我是查看人工號用逗號拼接的一個字符串陪白,目的是為了統(tǒng)計這條數(shù)據(jù)被哪些人看過。
做法:在查詢之后進行 update這個字段操作(我這里是批量更新)
坑來了:
首先我返回的列表數(shù)據(jù)的所有元素膳灶,每個元素的updatetime在數(shù)據(jù)庫中都有值咱士,不是空。
返回的這個rePage對象里面的列表數(shù)據(jù)時轧钓,集合中的所有元素的 updateTime的值都變成了最新的這個值序厉。我去查看數(shù)據(jù)庫,此刻數(shù)據(jù)庫的值并沒有都改成一樣聋迎,也就是說我的查詢結(jié)果跟數(shù)據(jù)庫實際值不一致了脂矫。無任何緩存操作。過一會 霉晕,重復(fù)刷新幾次查詢接口又變的正常了庭再,一致了。這個過程中牺堰,沒有任何其它人操作拄轻。
我把updatetime 字段上的@TableField(fill = FieldFill.UPDATE) 刪除,updateBy上面的沒有刪除伟葫。仍然不行恨搓,還是會出問題。
最終我把Page中泛型對象 Inspection 類里面所有的 @TableField(fill = FieldFill.UPDATE) 都刪除筏养,結(jié)果正常了斧抱,不再出現(xiàn)查詢結(jié)果與數(shù)據(jù)庫不一致的情況。
原因:暫時未知渐溶。
總結(jié):查詢之后存在修改操作的場景辉浦,查詢表對應(yīng)的實體類中,所有屬性的 @TableField(fill = FieldFill.UPDATE) 都刪除茎辐,避免出現(xiàn)bug宪郊;
終極大招:不用 @TableField(fill = FieldFill.UPDATE) 。