spring-data-jpa使用日期
在以往的一些项目中,我们在每张mysql表创建的时候都会增加两个时间字段,create_time和update_time.
用户记录数据的入库和更新时间。
但在实体类上,我们并没有将这两个时间字段明确定义出来。字段的赋值都是由mysql自动完成。
比方下面一个建表语句
CREATE TABLE if not exists `process_info` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `project_code` varchar(255) NOT NULL comment '项目ID', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 comment '工作流表'
但是如果这两个日期需要传递到前端进行展示。
那么实体类中就必须定义了。
@Data @NoArgsConstructor @AllArgsConstructor @Entity @Table(name = "process_info") public class ProcessInfo implements Serializable { private static final long serialVersionUID = 2964930219754666582L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; @NotEmpty @ApiModelProperty("项目ID") private String projectCode; @CreationTimestamp @Column(name = "create_time") private LocalDateTime createTime; @UpdateTimestamp @Column(name = "update_time") private LocalDateTime updateTime; @PrePersist protected void onCreate() { updateTime = createTime = LocalDateTime.now(); } @PreUpdate protected void onUpdate() { updateTime = LocalDateTime.now(); } }
比较特殊的地方在于,之前的时间创建、更新都是由mysql自动完成。
但现在我们的对象里已经有了这两个字段,如果我们不进行赋值,mysql就会认为我们在这两列要保存成null。
这个时候就跟我们的意图相违背。
也就是说当我们在实体类中创建了这两个字段之后,这两个字段的值的生成的责任就从mysql转移到hibernate中来。
我们需要给这两个字段指定值的生成策略。
标签:
Hibernate
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
2021-07-05 springboot设置定时任务(2)