Есть 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 остается открытым
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости