У меня проблемы со спящим множеством многих. Когда я пытаюсь удалить элемент из отношения, hibernate загружает всю коллекцию (слишком большой). Вот пример: supose А имеет многие ко многим с соотношением BСпящий режим: удалить элемент из коллекции без инициализации
public class A {
@ManyToMany(cascade = { CascadeType.MERGE, CascadeType.PERSIST,
CascadeType.REFRESH }, fetch = FetchType.LAZY)
@JoinTable(name = "a_b", joinColumns = { @JoinColumn(name = "a_id", referencedColumnName = "id", unique = false) }, inverseJoinColumns = { @JoinColumn(name = "b_id", referencedColumnName = "id", unique = true) })
@Sort(type = SortType.COMPARATOR, comparator = AscBComparator.class)
private List<B> listB;
public List<B> getListB() {
return listB;
}
}
// in other part
A.getListB().remove(concreteB);
Когда программа достигает A.getListB() спящий режим загружает всю коллекцию. Есть ли вообще избежать этого? Я просто хочу удалить строку из таблицы join.
Я пробовал с: @BatchSize, чтобы ограничить размер коллекции, но в конце концов я понял, что он не работает, как я ожидал.
@LazyCollection (LazyCollectionOption.EXTRA), не работает
почему бы не удалять непосредственно B? –
, потому что B все еще является частью моего домена, я не могу его удалить. Просто B больше не связан с A. – Daniel