Hibernate Двунаправленные обновления ManyToMany с кэшем второго уровня - PullRequest
0 голосов
/ 01 июня 2010

У меня есть двунаправленный класс «многие ко многим»:

public class A{
 @ManyToMany(mappedBy="listA")
 private List<B> listB;
}
public class B{
 @ManyToMany
 private List<A> listA;
}

Теперь я сохраняю список A в B:

b.setListA(listA);

Это все работает нормально, пока я не включу кэширование второго уровня в коллекции a.ListB. Теперь, когда я обновляю список в B, a.listB не обновляется и остается устаревшим.

Как ты справляешься с этим?

Спасибо, Дуэйн

1 Ответ

2 голосов
/ 02 июня 2010

Правильно ли вы устанавливаете обе стороны двунаправленной связи между А и В? Типичный подход заключается в использовании защитных методов, таких как:

public class B {
    @ManyToMany
    private List<A> listA;

    public void addToListA(A a) {
        this.listA.add(a);
        a.getListB().add(this);
    }

    public void removeFromListA(A a) {
        this.listA.remove(a);
        a.getListB().remove(this);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...