2
我想强制CrudRepository#save(entity)插入一个新实体,而不是首先选择实体并在主键已存在时更新它。强制插入弹簧数据jpa
我会尽力举一个例子
public class Lock
{
@Id
@Column
private UUID uuid;
...
}
UUID id = UUID.randomUUID();
Lock firstLock = new Lock(id);
Lock secondLock = new Lock(id);
repo.save(firstLock);
repo.save(secondLock);
发生的事情是,第一保存操作执行以下两条语句
Hibernate: select lock0_.uuid as uuid5_0_, lock0_.expires as expires5_0_ from locks lock0_ where lock0_.uuid=?
Hibernate: insert into locks (expires, uuid) values (?, ?)
,而第二次调用保存执行的更新语句
Hibernate: select lock0_.uuid as uuid5_0_, lock0_.expires as expires5_0_ from locks lock0_ where lock0_.uuid=?
Hibernate: update locks set expires=? where uuid=?
我该如何确保第二次保存的电话不是简单的更新以前存储的记录?我希望它执行插入语句并失败,因为相同的主键已经存在