(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
我有这个 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