ребята.
У меня есть два класса, сопоставленных как многие ко многим, как показано ниже:
@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?