Использование @version с пружиной не работает, если его удалить в JSON - PullRequest
0 голосов
/ 03 октября 2019

У нас есть DTO

@Getter
@Setter
@NoArgsConstructor
@Table(name = "agenda")
@Entity
@EqualsAndHashCode(of = "id")
public class Agenda implements Serializable {

  private static final long serialVersionUID = -4588716014801416553L;

  @Id
  private String id;

  @Version
  private Long version = 1L;

  @Column(name = "nombre")
  private String name;

  @JsonIgnore
  @OneToMany(mappedBy = "agenda", targetEntity = Timetable.class)
  private Set<Timetable> timetables;

}

. В этом dto мы добавили @version of javax.persistence и работаем хорошо, если мы отправили в контроллер json с полевой версией, в другом случаеошибка при попытке сохранить в базе данных.

, например, если мы отправляем:

"agenda": {
  "name": "Agenda 1",
   "id": "agenda1",
   "version": 1
},

работает без проблем, но если мы удаляем версию, она выдает исключение, поэтому мой вопрос, всегда ли поле версии является обязательным ?,

И ошибка такова: не удалось выполнить оператор;SQL [н / п];ограничение [horario_id];вложенное исключение - org.hibernate.exception.ConstraintViolationException: не удалось выполнить оператор ",

, спасибо заранее.

1 Ответ

0 голосов
/ 03 октября 2019

Проблема заключалась в том, что мы использовали неправильный импорт, мы должны использовать

import org.springframework.data.annotation.Version;

вместо

import javax.persistence.Version;
...