Как обновить отношение типа коллекции с помощью mappedBy в Hibernate?

StackOverflow https://stackoverflow.com/questions/912542

  •  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 тем, что вы ищете?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top