JPA вопрос вставки «Многие ко многим» - PullRequest
0 голосов
/ 05 апреля 2020

ребята.

У меня есть два класса, сопоставленных как многие ко многим, как показано ниже:

@Entity
@Table(name = "ANIMAL")
public class Animal {

...

@ManyToMany(mappedBy="animals", fetch = FetchType.LAZY)
private List<Reserve> reserves;

public void addReserve(Reserve reserve) {
    reserves.add(reserve);
    reserve.addAnimal(this);
}

public void removeReserve(Reserve reserve) {
    reserves.remove(reserve);
    reserve.removeAnimal(this);
}

и

@Entity
@Table(name = "RESERVE")
public class Reserve {

...

@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "RESERVE_ANIMAL", joinColumns = @JoinColumn(name = "RESERVE_ID"), inverseJoinColumns = @JoinColumn(name = "ANIMAL_ID"))
private List<Animal> animals;

public void addAnimal(Animal animal) {
    animals.add(animal);
    animal.addReserve(this);
}

public void removeAnimal(Animal animal) {
    animals.remove(animal);
    animal.removeReserve(this);
}

У меня есть животное с тремя резервами, и я пытаюсь вызвать операцию save () на моем AnimalService, но когда я это делаю, в БД сохраняется только мой Animal, не отражающий отношения внутри таблицы RESERVE_ANIMAL.

Я пытался использовать метод find () для каждого резерва и помещал их в мои Animal.re резервы, кроме того, чтобы использовать CascadeType.ALL или CascadeType.MERGE для сохранения, но это выбрасывает отсоединенную сущность, переданную для сохранения. ошибка.

Как сохранить одно животное с несколькими коэффициентами. Уже существующие в базе данных резервы отражают это новое соотношение животных и резервов в таблице RESERVE_ANIMAL?

...