Я хотел бы заставить CrudRepository#save(entity) вставить новый объект вместо того, чтобы сначала выбирать объект и обновлять его, если первичный ключ уже существует.
попробую привести пример
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=?
Как мне убедиться, что второй вызов сохранения не просто обновляет ранее сохраненную запись? Я хочу, чтобы он выполнил оператор вставки и потерпел неудачу, потому что тот же первичный ключ уже существует