【发布时间】:2011-06-07 05:15:52
【问题描述】:
我在网络上到处都是,我有点迷茫,无法解决我的问题。
我正在使用 Eclipse 创建一个 Web 应用程序,在客户端使用 JSP,在服务器端使用 Servet/Hibernate。 我正在尝试将一个对象从一个 servlet 传递给一个 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");
Contact 是一个 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)
所以我试图找出原因,并在某处读到我需要在休眠配置文件中将当前会话上下文设置为“线程”。但是当我这样做时,我收到了这条消息:
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)
消息的第二行表明它与延迟加载有关,但最后一行 i 表明当程序试图获取“lastname”属性时出现错误,该属性基本上是一个字符串,所以我没有'不要认为它是“延迟加载”。
所以如果有人能帮我找到解决办法,那就太好了。
dao方法代码:
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;
}
【问题讨论】:
标签: hibernate jsp orm servlets