На моих страницах JSP получено could not initialize proxy no Session
исключение.
Вот что я делаю;
Есть DAO для Hibernate. Это не специальные классы. У них просто есть экземпляры Hibernate SessionFactory с автоматическим подключением. Да, я использую чистый Hibernate для доступа к БД.
Функции в классах DAO снабжены @Transactional(rollBackFor=Exception.class)
, и конфигурации My spring подготовлены соответствующим образом. Также мои сущности / контроллеры также настроены с аннотациями и т. Д.
У меня нет отдельного слоя классов обслуживания. Мои Сервисы и DAO перекрываются. они одинаковы. Если классу Service требуется доступ к БД, он просто помечается @Repository
, а не @Service
До этой ошибки все работало отлично. (У меня есть сотни классов / DAO / юридических лиц и т. Д.)
Теперь мне нужно вызвать две функции DAO / Service на одном из моих контроллеров. Я вызываю вторую функцию DAO только тогда, когда первая вызывает исключение.
Мне нужно выдать исключения, основанные на некоторых условиях, чтобы откатить изменения, сделанные при первом вызове DAO. Второй вызов просто чтобы показать некоторую информацию из БД пользователю, который ввел неправильный ввод.
Я не знаю, почему, но работает второй вызов DAO, он получает классы из БД. затем я пересылаю эти классы в мой атрибут Model на моих контроллерах, чтобы мои JSP могли их отображать.
Но когда мои страницы JSP пытаются получить доступ к атрибутам этих классов, я получил
could not initialize proxy no Session
исключение.
Итак, вот мой вопрос, что мне делать, чтобы избежать этих ошибок.
Должен ли я что-то делать с транзакцией / сеансом гибернации при первом вызове DAO?
Потому что я ничего не делаю. Я просто получаю сеанс и получаю / сохраняю / обновляю и т. Д. На нем. Я думаю, что атрибут @Transactional
будет обрабатывать проблемы транзакции, а атрибут @Repository
обрабатывает проблемы сессии.
Я уже пытался решить проблему с отложенной загрузкой.
Я уже установил фильтр OpenSessionInViewFilter
в свои конфигурации.
Но никто из них не решил мою проблему.
Любые советы / мысли?