Во-первых, это от Google составной ключ означает
Составной ключ представляет собой комбинацию двух или более столбцов в таблице, которые могут быть использованы для уникальной идентификации каждой строки в таблице, когда столбцыкомбинированные уникальность гарантируется, но если рассматривать их по отдельности, это не гарантирует уникальность.
Составной ключ с уникальным ключом является пустой тратой.
, если вы хотите обновить сущностьjpa, вам нужен ключ для классификации, если сущность уже существует.
@Transactional
public <S extends T> S save(S entity) {
if(this.entityInformation.isNew(entity)) {
this.em.persist(entity);
return entity;
} else {
return this.em.merge(entity);
}
}
Есть два способа решения вашей проблемы.
Если вы не можете получить идентификатор от клиента при обновлении, это означает, что идентификатор потерял свою первоначальную функцию.Затем удалите аннотацию @Id в поле id, установите имя с помощью @Id.И не устанавливайте автоматическую генерацию для него.
Я думаю, что вам нужно @Column (unique = true, nullable = false) в поле вашего имени.И это приказ обновить что-то.
Transaction t = transactionRepository.findByName(name);
t.set.... //your update
transactionRepository.save(t);