小编Joh*_*n D的帖子

使用 updatable=false 更新实体将字段设置为 null

我正在使用带有 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)

端点返回的 …

hibernate jpa spring-boot

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

hibernate ×1

jpa ×1

spring-boot ×1