Я был везде в сети, я немного растерялся и не смог решить мою проблему.
Я создаю веб-приложение с использованием Eclipse, с JSP на стороне клиента и Servet / Hibernate на стороне сервера.
Я пытаюсь передать объект на страницу JSP из сервлета.
В сервлете:
Contact c = dao.getContact(dataID);
request.setAttribute("data", c);
getServletContext()
.getRequestDispatcher("/"+url+"?id="+dataID).forward(request, response);
На странице JSP:
Contact contact = (Contact)request.getAttribute("data");
Контакт - это ORM, который имеет такие атрибуты, как "фамилия".
Но я получаю это сообщение об ошибке:
GRAVE: "Servlet.service()" pour la servlet GetData a généré une exception
org.hibernate.HibernateException: No CurrentSessionContext configured!
at org.hibernate.impl.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:683)
at domain.DAOContact.getContact(DAOContact.java:39)
at domain.GetData.doGet(GetData.java:27)
Поэтому я попытался выяснить, почему, и где-то я прочитал, что мне нужно установить текущий контекст сеанса в «thread» в файле конфигурации hibernate. Но когда я сделал это, я получил это сообщение:
GRAVE: Servlet.service() for servlet [GetData] in context with path [/CarnetContacts] threw exception [org.hibernate.LazyInitializationException: could not initialize proxy - no Session] with root cause
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:167)
at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:215)
at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:190)
at domain.Contact_$$_javassist_1.getLastName(Contact_$$_javassist_1.java)
Вторая строка сообщения указывает, что это связано с отложенной загрузкой, но последняя строка показывает, что ошибка возникает, когда программа пытается получить атрибут «lastname», который в основном является строкой, поэтому я не не думаю, что это "ленивый груз".
Так что, если кто-нибудь может помочь мне найти решение, это было бы очень любезно.
Код метода дао:
public Contact getContact(int contactId){
Session session = HibernateSessionFactory.getSessionFactory().getCurrentSession();
Transaction t = session.beginTransaction();
t.begin();
Contact contact =(Contact) session.load(Contact.class, new Integer(contactId));
t.commit();
return contact;
}