Java Spring jpa禁用合并

Java Spring jpa禁用合并,java,spring,jpa,spring-data-jpa,Java,Spring,Jpa,Spring Data Jpa,我想禁用jpa存储库中的合并。只能创建新记录并禁止更新旧记录 那么,如果我从JpaRepository扩展,如何禁用存储库记录的更新?您需要的基本上是一个不可变的实体,从实体中删除setter并使用builder创建新实体。 使实体不可变可以停止对托管实体的更改,因此不会在事务中传播任何更改 但是,如果您传递了分配了id的不可变记录,并且该记录已经存在于数据库中,则不会停止hibernate更新数据库记录 所以我认为您可以查看@PreUpdate实体侦听器并抛出异常。所以,若有人试图更新,它

我想禁用jpa存储库中的合并。只能创建新记录并禁止更新旧记录

那么,如果我从
JpaRepository
扩展,如何禁用存储库记录的更新?

您需要的基本上是一个不可变的实体,从实体中删除setter并使用builder创建新实体。

  • 使实体不可变可以停止对托管实体的更改,因此不会在事务中传播任何更改

  • 但是,如果您传递了分配了id的不可变记录,并且该记录已经存在于数据库中,则不会停止hibernate更新数据库记录

  • 所以我认为您可以查看
    @PreUpdate
    实体侦听器并抛出异常。所以,若有人试图更新,它将抛出异常,更新将不会发生

  • 但最好的方法是创建隐藏存储库和数据库的服务

  • 服务在
    保存之前执行
    查找
    ,以避免第二点

  • 使实体不可变以确保第一点


谢谢,该服务无论如何都会存在,但我想让它无法保存到数据库本身(如果有人试图使用存储库)。我还可以将实体字段设置为updateable=false。是的,我忘了。