Как обновить отношение типа коллекции с помощью mappedBy в Hibernate?
-
06-09-2019 - |
Вопрос
У меня есть две связанные сущности, скажем
@Entity
public class Book {
@ManyToOne
Shelf shelf;
}
@Entity
public class Shelf {
@OneToMany(mappedBy="shelf")
Set<Book> books;
}
Если я извлекаю пустую полку (без книг), создаю и сохраняю новую книгу на полке, а затем снова извлекаю эту полку, ее коллекция книг пуста.Когда я запускаю его с журналированием отладки, я вижу, что Hibernate не выполняет поиск полки во второй раз, он просто возвращает ее из кэша сеанса, где она лежит, не зная, что ее коллекция книг была обновлена.
Как я могу избавиться от эффекта и получить обновленное состояние полки?
Спасибо,
Artem.
Решение
Похоже, вам приходится поддерживать его вручную в рамках одного сеанса (транзакции).Ни @Cascade, ни EAGER не влияют на кэш сеанса
Другие советы
Попробуйте установить тип выборки для книг, установленных на полке:
@Entity
public class Shelf {
@OneToMany(mappedBy="shelf",fetch=FetchType.EAGER)
Set<Book> books;
}
Является ли @Cascade тем, что вы ищете?