В настоящее время используется немного более старая версия Hibernate (3.3.2.GA) и получение исключения org.hibernate.LazyInitializationException в границах транзакции. Я подтвердил, что вызывающий метод помечен @Transactional
, плюс трассировка стека во время исключения также показывает его:
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
Тем не менее, попытка выполнить итерацию по @CollectionOfElements
быстро вызывает исключение LazyInitializationException с "ни один сеанс или сеанс не был закрыт".
Во время отладки я вижу, что прокси Hibernate в соответствующей коллекции имеет нулевой сеанс виртуально, как только он загружается Hibernate. Это то, что беспокоиться? Как я могу отследить и устранить это - другими словами, во время отладки, как лучше всего отследить, что происходит с сеансом?
Очевидно, я понимаю, что изменение коллекции на Eager fetching решит проблему, но я скорее выясню, почему Lazy Load не работает, так как эта (потенциально) большая коллекция не нужна в большинстве сценариев.
Спасибо!