LazyInitializationException и JasperException в JSP

268
28 февраля 2017, 15:38

Есть MySQL база с 1 таблицей пользователей, есть простейшее CRUD приложение со Spring MVC и, собственно, Hibernate для работы с этой базой. Все по туториалам: 1 энтити (User), слой DAO, UserService и UserController. Тут вроде все понятно и с аннотациями тоже.

А вот конфигурация Spring и Hibernate для меня пока еще полутемный лес. По туториалу имею только web.xml с 1 сервлетом ("mvc-dispatcher" org.springframework.web.servlet.DispatcherServlet) и маппингом, а также mvc-dispatcher-servlet.xml, где настроино подключение к БД, Hibernate (LocalSessionFactoryBean для того самого энтити), бины для DAO и Сервиса, HibernateTransactionManager).

Ну и тупо скопированные и адаптированные с примера 2 JSP файла с поддержкой

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>    
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>    
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>

В итоге приложение запускается, вижу отображение БД, операции добавления через форму и удаления проходят безупречно, а вот правка записи или обращение к конкретной записи приводит к экрану HTTP Status 500.

org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/pages/userdata.jsp at line 53

В частности при обращении к ${user.id} или ${user.name} Ниже в Stacktrace:

javax.el.ELException: Error reading 'id' on type usermanager.entities.User_$$_jvstc8f_0

Еще ниже

org.hibernate.LazyInitializationException: could not initialize proxy - no Session

ЧСХ скачанный с туториала проект с идентичными импортами и файлами конфигурации работает без ошибок! Подскажите, пожалуйста, в какую сторону смотреть? Если причина в LazyInitialization, то как ее корректней отключить, а еще лучше - как исправить ошибку в работе оставив Lazy?

UPD: Аннотация @Proxy(lazy=false) на энтити класс проблему в целом решает - программа работает, хотя JSP все же странно себя ведет в некоторых сценариях, но это уже другая история.

Вопрос как исправить ошибку в работе оставив Lazy остается открытым

READ ALSO
Нужно ли обходить NAT при p2p использовании RtpStream?

Нужно ли обходить NAT при p2p использовании RtpStream?

Я собираюсь стримить звук с микрофона смартфона android на другой android смартфонЕсть сервер который используется только для идентификации, после...

208
Не отображается MyLocationButton google maps на android 6.0

Не отображается MyLocationButton google maps на android 6.0

На android 60 не отображается LocationButton google maps

249
Зачем нужен класс ThreadLocal в Java?

Зачем нужен класс ThreadLocal в Java?

Поясните в общих чертах что это и с чем его едят, а после - может и ссылку годную на пример :)

325
Сохранение и загрузка состояния Activity

Сохранение и загрузка состояния Activity

Возможно ли в Android сохранить разметку с значениями в файл, чтобы после можно было её из этого файла потом загрузить?

381