(Spring) 使用 PUT 方法时,@CreationTimestamp 失败

(Spring) When using PUT method, @CreationTimestamp fails

我有这个 API,它使用 @CreationTimestamp 在任何信息添加到数据库时自动生成日期,并且它有效。问题是,当我在数据库的特定信息中使用 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 生成的日期消失,该字段变为空白(空)。

为什么会这样?

OBS:我认为没有必要,但这是我的POST方法:

@PostMapping("/someURL")
public User addUser(@RequestBody @Valid User T) {
return userRepository.save(T);
}

创建日期将在您的 editUser 方法中调用 save 方法时更新。该实体可能不包含此值,因此 null 将被设置为更新值。 (你可以尝试调试这个来检查)

更改列注释如下:

@Column(name = "CreationDate", length = 29, nullable = false, updatable = false)

这应该可以防止更新曾经创建的日期。

HTH