Невозможно удалить или обновить родительскую строку HIBERNATE один ко многим - PullRequest
0 голосов
/ 09 апреля 2020

Я получаю эту ошибку, когда пытаюсь удалить питомца. У этого питомца есть посещения (ребенок), но я определил CASCADE.ALL в сущности питомца. Есть идеи ? ОШИБКА: Невозможно удалить или обновить родительскую строку: ограничение внешнего ключа не выполнено (web_customer_tracker. visits, КОНСТРАИНТ visits_ibfk_1 ИНОСТРАННЫЙ КЛЮЧ (pet_id) ССЫЛКИ pets (pet_id))

 @Entity
@Table(name = "pets")
public class Pet {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "pet_id")
    private int pet_id;

    .....

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "visit_id")
    private Set<Visit> visits;

Посетите класс:

@Entity
@Table(name = "visits")
public class Visit {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "visit_id")
    private int visit_id;

    @ManyToOne
    @JoinColumn(name = "pet_id")
    private Pet pet;

    ....

1 Ответ

0 голосов
/ 09 апреля 2020

вы используете mappedBy неправильно, mappedBy ссылается на имя объекта на противоположной стороне

, как это

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "pet")
private Set<Visit> visits;

или если вы хотите отобразить его с помощью JoinColum попробуйте

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "pet_id")
private Set<Visit> visits;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...