Недавно я столкнулся с подобной проблемой.
В моем случае новая сущность была передана из пользовательского интерфейса, и ID был 0 вместо NULL (так как тип IDбыл примитивным на стороне Java).Поэтому Hibernate не использовал правильную стратегию save
.
В конце концов, я изменил тип с long
на Long
, и это помогло:
private long id;
private Long id;
Также update
метод был изменен с:
@PutMapping("/{id}")
public T update(@PathVariable ID id, @Valid @RequestBody T entity) {
this.getService().update(entity);
return entity;
}
на:
@PutMapping("/{id}")
public T update(@PathVariable ID id, @Valid @RequestBody T entity) {
return this.getService().update(entity);
}
PS: когда идентификатор объекта был равен 0, Hibernate использовал стратегию merge
, однако, вместо этого следует persist
стратегия для новых сущностей ( ссылка для реализации save
метода ).