java - 使用数据 JPA 和 CrudRepository 只保存而不更新

标签 java spring hibernate spring-data-jpa

我的应用程序中有一种情况,我想保存新记录。我正在使用 Crudrepository save() 方法。众所周知,如果记录不存在,save() 将执行保存操作,如果找到则更新操作。

但我想限制更新操作。就像如果记录已经可用一样,既不更新也不保存该记录。

下面说的是我们的实体类,它具有组合键。并且基于复合键我们想要执行此操作。

实体类

@Entity
@IdClass(PrescriptionKey.class)
public class Prescription implements Serializable{

  @GeneratedValue(strategy=GenerationType.AUTO)
  @Column(name="prescription_id")
  private int prescriptionId;

  @Id
  @Column(name="dose_id")
  private int doseId;

  @Id
  @Column(name="med_id")
  private int medId;

  //Setter Getters
}

复合键类

 public class PrescriptionKey implements Serializable {

  private int doseId;

  private int medId;

  //Setter Getter
}

假设每次保存操作的数据都包含新数据以及已保存的旧数据。现在我们只想对新数据执行保存。

最佳答案

有时可能是找不到您尝试更新的处方 ID。 jpa 提供的自动生成的处方 ID 小于您尝试更新的处方 ID。因此,JPA 使用自动生成的处方 ID 创建一条新记录,而不是您尝试更新的处方 ID。

关于java - 使用数据 JPA 和 CrudRepository 只保存而不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53680574/

相关文章:

用于通过 ZMQ 套接字发送对象的 ZeroMQ 的 Java "Reference"解决方法

java - 任何服务器的最大连接超时是多少?

spring - 在 Spring Boot 中设计可定制的 ERP

java - Spring 3.0M4 并将对象作为参数传递给 POST

java - Spring : 2 EntityManagerFactory in 1 transaction

Java 重用通用 FXML

java - 线程中出现异常,java代码将无法正常执行。 if/else 语句

spring - Spring 4 AbstractWebSocketMessageBrokerConfigurer与SockJS无法正确协商传输

java - hibernate : merge detatched instance data in to persistent instance

java - Spring JPA 不检测已删除的表