我正在使用带有 JPA/Hibernate 的 SpringBoot,我想添加审计。
我创建了一个具有以下内容的抽象实体:
@CreatedDate
@NotNull
@Column(columnDefinition = "DATETIME(3)", updatable = false)
private ZonedDateTime createdDate;
@LastModifiedDate
@Column(columnDefinition = "DATETIME(3)")
private ZonedDateTime lastModifiedDate;
Run Code Online (Sandbox Code Playgroud)
应用程序
我正在开发一个带有简单 CRUD 实体的 RESTful API。我的资源(控制器)在 jpa 存储库上使用 save() 方法进行创建和更新
问题 :
当我在实体上调用 repository.save() 来更新它时,“createdDate”被忽略(这是正常的),但该方法返回的实体将其“createdDate”设置为 null。
然后实体被放入缓存中,下一个 get 也将其 createdDate 值设为 null。
如何在不允许修改字段 createdDate 和使用 JpaCrudRepository 的情况下更新实体?
更新
存储库定义:
public interface ModelRepository extends JpaRepository<Model, Long> {
Run Code Online (Sandbox Code Playgroud)
休息控制器:
public ResponseEntity<Model> createModel(@RequestBody Model model) throws URISyntaxException {
Model result = modelRepository.save(model);
return ResponseEntity.created(new URI("/api/v1/models/" + result.getId()))
.body(result);
}
Run Code Online (Sandbox Code Playgroud)
端点返回的 …