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

时间:2018-12-05 19:00:05

标签: spring put

我有一个使用@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);
}

1 个答案:

答案 0 :(得分:1)

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

按如下所示更改列注释:

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

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

HTH