我有一个使用@CreationTimestamp的API,可以在将任何信息添加到数据库时自动生成日期,并且可以正常工作。问题是,当我在数据库的特定信息中使用PUT方法时,生成的日期消失了。 这是事物的结构:
...
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "CreationDate", length = 29)
@CreationTimestamp
private Date CreationDate;
...
这是我的PUT方法的方式:
@PutMapping("/SomeURL/{id}")
@ResponseBody
public User editUser(@RequestBody @Valid User T, @PathVariable Integer id) {
return userRepository.save(T);
}
使用此选项时,从@CreationTimestamp生成的Date消失,该字段变为空白(空)。
为什么会这样?
OBS:我认为没有必要,但这是我的POST方法:
@PostMapping("/someURL")
public User addUser(@RequestBody @Valid User T) {
return userRepository.save(T);
}
答案 0 :(得分:1)
在您的save
方法中调用editUser
方法时,创建日期将被更新。该实体可能不包含该值,因此将null设置为更新值。 (您可以尝试对此进行调试以进行检查)
按如下所示更改列注释:
@Column(name = "CreationDate", length = 29, nullable = false, updatable = false)
这应该防止曾经创建的日期被更新。
HTH