用SSh框架整合时。在DAO中掉用getHibernateTemplate().save(transientInstance);时就会说Session已经关闭或者时不存在Session。 这是什么原因?是因为导包有冲突吗?DAO代码是:public class OrdersDAO extends HibernateDaoSupport {
private static final Log log = LogFactory.getLog(OrdersDAO.class); protected void initDao() {
// do nothing
} public void save(Orders transientInstance) {
log.debug("saving Orders instance");
try {
getHibernateTemplate().save(transientInstance);
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
}
public void save1(Orderlineitem transientInstance) {
log.debug("saving Orderlineitem instance");
try {
getHibernateTemplate().save(transientInstance);
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
}
public Orders findById(int id) {
log.debug("getting Orders instance with id: " + id);
try {
// Session session=this.getSession();
// Orders instance = (Orders)session.get(
// Orders.class, id);
Orders instance=(Orders)getHibernateTemplate().get(Orders.class, id); if(instance==null){
System.out.println("数据库里没有此数据!");
}else{
instance.getOrderlineitems().size();
System.out.println(instance.getOrderlineitems().size());
}
// session.close();
return instance;
} catch (RuntimeException re) {
log.error("get failed", re);
throw re;
}
}
public static OrdersDAO getFromApplicationContext(ApplicationContext ctx) {
return (OrdersDAO) ctx.getBean("OrdersDAO");
}
}
抛得异常是:javax.servlet.ServletException: failed to lazily initialize a collection of role: com.order.bean.Orders.orderlineitems, no session or session was closed
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role:
com.order.bean.Orders.orderlineitems, no session or session was closed org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358)
org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350)
org.hibernate.collection.AbstractPersistentCollection.readSize(AbstractPersistentCollection.java:97)
org.hibernate.collection.PersistentSet.size(PersistentSet.java:114)
com.order.bean.OrdersDAO.findById(OrdersDAO.java:47)
com.order.action.OrderItemAction.execute(OrderItemAction.java:40)
org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:110)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
在红色那报的异常。 不知道为什么。老师说是因为是Spring的asm-2.2.3.jar和Struts的asm.jar冲突了。可是我试了试还是不对 要是自己定义一个Session就可以用。也不回报错。郁闷中 大家帮帮
private static final Log log = LogFactory.getLog(OrdersDAO.class); protected void initDao() {
// do nothing
} public void save(Orders transientInstance) {
log.debug("saving Orders instance");
try {
getHibernateTemplate().save(transientInstance);
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
}
public void save1(Orderlineitem transientInstance) {
log.debug("saving Orderlineitem instance");
try {
getHibernateTemplate().save(transientInstance);
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
}
public Orders findById(int id) {
log.debug("getting Orders instance with id: " + id);
try {
// Session session=this.getSession();
// Orders instance = (Orders)session.get(
// Orders.class, id);
Orders instance=(Orders)getHibernateTemplate().get(Orders.class, id); if(instance==null){
System.out.println("数据库里没有此数据!");
}else{
instance.getOrderlineitems().size();
System.out.println(instance.getOrderlineitems().size());
}
// session.close();
return instance;
} catch (RuntimeException re) {
log.error("get failed", re);
throw re;
}
}
public static OrdersDAO getFromApplicationContext(ApplicationContext ctx) {
return (OrdersDAO) ctx.getBean("OrdersDAO");
}
}
抛得异常是:javax.servlet.ServletException: failed to lazily initialize a collection of role: com.order.bean.Orders.orderlineitems, no session or session was closed
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role:
com.order.bean.Orders.orderlineitems, no session or session was closed org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358)
org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350)
org.hibernate.collection.AbstractPersistentCollection.readSize(AbstractPersistentCollection.java:97)
org.hibernate.collection.PersistentSet.size(PersistentSet.java:114)
com.order.bean.OrdersDAO.findById(OrdersDAO.java:47)
com.order.action.OrderItemAction.execute(OrderItemAction.java:40)
org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:110)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
在红色那报的异常。 不知道为什么。老师说是因为是Spring的asm-2.2.3.jar和Struts的asm.jar冲突了。可是我试了试还是不对 要是自己定义一个Session就可以用。也不回报错。郁闷中 大家帮帮
解决方案 »
- 页面用hidden传值 在ACTION里 取不了 但是用?传的话又可以取到
- 高手赐教
- jsp更改区域语言的问题
- 在有Tab的页面中,无法提交表单,处理ajax等
- 一个表格格式的问题。
- 关于XMLHTTP的问题
- 来看看这个脚本的checkbox框判断?
- http://xxx:7001/TestServlet?id=10096 这样一个链接,在我机器上点击时,老是弹出保存窗口让我选择保存这个servler,这是什么原因?
- 请教java call storeprocedure的问题
- %%%% Error Creating SessionFactory %%%%
- 使用了struts的 html标签后不知如何获取<html:form> 中的form 名称。
- orcla jdbc 连接的例子 谁有???我忘记了 急用!!!100分
<property name="hibernate.current_session_context_class">thread</property>
1 lazy="false"
2 使用前,事务里面调用一次你的这个属性
3 修改你的设计
那会你就是这样解决错误的?