SPRING DATA JPA - Нарушение ключа после ручной вставки - PullRequest
0 голосов
/ 15 января 2019

У меня есть простой проект с пружинной загрузкой / гибернацией, и у меня есть ошибки при вставке новых значений в модульные тесты. для тестов я использую новую базу данных с фиктивными данными (data.sql) После запуска, когда запускаются тесты на вставку, у меня появляется ошибка «Key Violation»:

2019-01-15 10:14:00,286 ERROR [main] org.hibernate.engine.jdbc.spi.SqlExceptionHelper: Unique index or primary key violation: "PRIMARY KEY ON PUBLIC.NATURAL_PERSON_CATEGORY(ID)"; SQL statement:
insert into natural_person_category (created_by, creation_date, deletion_by, deletion_date, modification_date, modificationd_by, comment, label, id) values (?, ?, ?, ?, ?, ?, ?, ?, ?) [23505-194]

Я управляю идентификаторами с помощью аннотаций: @Id @GeneratedValue (стратегии = GenerationType.AUTO) Когда я изменяю идентификатор в моих фиктивных данных (например, от 1 до 100), это работает ....

Мои POJO:

@Data
@Entity
@Table
public class NaturalPerson {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @JsonProperty("id_natural_person")
    protected Integer id;

    @JsonProperty("first_name")
    private String firstName;

    @JsonProperty("last_name")
    private String lastName;

    @JsonProperty("is_minor")
    private boolean isMinor;

    private String mail;

    @OneToMany(cascade = CascadeType.ALL)
    private List<Address> addresses;


    @OneToOne(cascade = CascadeType.ALL)
    @JsonProperty("category")
    private NaturalPersonCategory naturalPersonCategory;

    @JsonProperty("is_main")
    private boolean isMain;


    @JsonGetter("fullname")
    public String getFullname() {
        return this.firstName + " " + this.lastName;
    }

}

@Data
@Entity
@Table
public class Address {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @JsonProperty("id_address")
    protected Integer id;

    private String line1;
    private String line2;
    private String line3;

    @JsonProperty("postal_code")
    private String postalCode;

    private String city;

    @ManyToOne
    @JoinColumn(name = "id_country")
    private Country country;

    @JsonProperty("start_date")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date startDate;

    @JsonProperty("end_date")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date endDate;
}

@Data
@Entity
@Table
public class NaturalPersonCategory {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @JsonProperty("id_natural_person_category")
    protected Integer id;

    @NotNull
    protected String label;

    @Column(columnDefinition = "TEXT")
    protected String comment;

}

thank'you

1 Ответ

0 голосов
/ 23 января 2019

Я решил эту проблему с

@GeneratedValue(strategy = GenerationType.IDENTITY)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...