mem*_*und 5 java mysql spring hibernate spring-data-jpa
我使用的是spring-jpa坚持一个LocalDateTime created_at带@CreatedDate。
@CreatedDate
private LocalDateTime created_at;
Run Code Online (Sandbox Code Playgroud)
问题:这会自动生成具有datetime(6) mysql列类型的列。
问题:如何将其更改为TIMESTAMP输入?我试过了,@Temporal(TIMESTAMP)但这是不允许的LocalDateTime。
有可能吗?
我可以让它与以下任何解决方案一起使用:
//spring way, with @EnableJpaAuditing on configuration
@EntityListeners(AuditingEntityListener.class)
class MyEntity {
@CreatedDate
@Column(columnDefinition = "TIMESTAMP", nullable = false)
private LocalDateTime created_at;
}
//hibernate way
@CreationTimestamp
@Temporal(TemporalType.TIMESTAMP)
private Date created_at;
//mysql way
@Column(insertable = false, updatable = false,
columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
private LocalDateTime created_at;
Run Code Online (Sandbox Code Playgroud)
对于mysql重要的部分是:insertable=falsefor mysql 使用定义的DEFAULT CURRENT_TIMESTAMP, 和updatable=falsefor ON UPDATE CURRENT_TIMESTAMP.
否则,hibernate orm 会将created_at=null空值发送到数据库,从而阻止列定义接管!或者更糟糕的是,如果您设置nullable=false,尽管您为列定义了默认时间戳处理,但插入将会失败。
Dee*_*mar -3
你可以做一件事根据你需要的形式生成当前时间使用Java有一个名为DateTimeFormatter的方法。让我通过代码解释一下:-
LocalDate localDate = LocalDate.now();
DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
字符串日期 = dtf.format(localDate);
然后将此日期分配给您的字段。它会工作得很好。
| 归档时间: |
|
| 查看次数: |
2435 次 |
| 最近记录: |