У меня есть список из 25 объектов MyApplication, которые я хочу сохранить, используя hibernate / JPA. Это делается с помощью следующего метода:
MyApplicationRepository.saveAll(myAppList);
Однако я заметил, что hibernate создает более 60 000 объектов MyApplication (близко к общему количеству записей, уже находящихся в базе данных для этой сущности) при вставке / обновлении этого списка из 25 в базе данных. У меня нет большого опыта гибернации, который заставляет меня верить, что я создал неэффективные отношения сущностей. Часть класса MyApplication:
public class MyApplication {
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "APPLICATION_CATEGORY", joinColumns = {
@JoinColumn(name = "applicationid", nullable = false, updatable = false) },
inverseJoinColumns = { @JoinColumn(name = "categoryid",
nullable = false, updatable = false) })
private Set<Category> categorySet;
@OneToMany(mappedBy = "myApplication",
cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private Set<Screenshot> screenshotSet;
}
Класс категории (один пример отношения множественных ко многим из MyApplication):
public class Category {
@ManyToMany(fetch = FetchType.LAZY, mappedBy = "categorySet")
private Set<MyApplication> myApplicationSet;
}
Класс снимка экрана:
public class Screenshot {
@ManyToOne
@JoinColumn(name = "applicationid")
private MyApplication myApplication;
}
Что я сделал не так, что в результате Hibernate создал так много экземпляров MyApplication при сохранении?
Примечание 1: В конце концов вся информация MyApplication и информация о его категориях и снимках экрана правильно сохраняется в базе данных.
Примечание 2. Важно сохранить не только MyApplication, но и все из всех его категорий и снимков экрана.