Это происходит потому, что исходный сеанс закрыт.Перед сохранением элемента в памяти и до закрытия сеанса Hibernate необходимо получить доступ ко всем связанным коллекциям, которые будут использоваться позже, чтобы он был загружен в память.Альтернативой этому является настройка коллекции таким образом, чтобы она загружалась Eager, однако это может повлиять на производительность.
Предварительную загрузку коллекции можно легко выполнить, даже обратившись к свойству .Count
(C #, ното же самое относится и к Java).Пример:
Brand b = BrandRepository.GetById(1234);
int tmp = b.Products.Count; //this is only to load the products collection. This can then be used in a later session.