任何在你打开hibernate的session后,如果操作执行完毕,都是需要将session关闭的。
解决方案 »
- 关于“/”、“\”的区别。
- 如何获取当前WEBLOGIC应用的IP地址及端口信息,感谢!
- Hibernate 架构问题
- 请问有中文的 LDAP 客户端么?
- 初学者:安装JavaEE SDK出错,不知何故,还望高手解答一下
- struts 验证session唯一登陆的问题
- jtable问题,来大牛解决了啊【急求】分不是问题
- 如何实现java系统中可扩展??
- net.sf.hibernate.UnresolvableObjectException: No row with the given identifier exists
- weblogic下怎样部署ejb,谢谢
- [分享]晒一下自己用软件做的报表图~
- webservice主要用来做什么的?
比如 我查出来个Firstkind类型的对象赋值给firstkind firstkind.getSecondkinds().size()的时候就会出现问题
FirstkindDAO firstkindDAO=new FirstkindDAO();
List firstkindList=firstkindDAO.findAll();
if(firstkindList.size()==0){
request.setAttribute("error","一级新闻栏目为空");
return mapping.getInputForward();
}
Firstkind firstkind=new Firstkind();
boolean hasSecondkind=false;
Iterator ite=firstkindList.iterator();
while(ite.hasNext()){
firstkind=(Firstkind)ite.next();
//下面一行如果不关session就没问题,如果关session就有问题
if(!firstkind.getSecondkinds().isEmpty()){
if(firstkind.getSecondkinds().size()>0){
//firstkind=(Firstkind)ite.next();
hasSecondkind=true;
break;
}
}
}
不关闭肯定会出问题
firstkind.getSecondkinds().size()出错 可能是 firstkind.getSecondkinds()得到的集合为空
应该先对 firstkind.getSecondkinds()进行一下判断
firstkind.getSecondkinds().size()出错 可能是 firstkind.getSecondkinds()得到的集合为空
应该先对 firstkind.getSecondkinds()进行一下判断6楼,
如果我查询后关闭session
firstkind.getSecondkinds()就是空如果查询后不关闭session
firstkind.getSecondkinds()就是有值。firstkind.getSecondkins().size();也有值,
查询的数据还是持久状态的吗?
提交事物 不就已经 flush()了吗?
Hibernate默认是延迟加载的,也就是说只有你用到你获取的对象内的其他对象属性的时候 Hibernate才回去加载..如果那个时候你的session已经关闭了 就报错了..如果你希望session关闭以后还可以读到你要获取对象内部的其他对象,那就用立即加载模式,就是载入一个对象的时候,立刻载入和他向关联的所有对象.或者是你读到对象以后 在session关闭之间 调用session.persist(Object obj)(obj为你取得对象 Hibernate回自动帮你把所有内部对象从数据库中读出来)或者调用 Hibernate.nitialize(Object obj)(这里obj是你要立刻加载的对象的内部属性,用对象.get名字()获得)这样你关闭session以后内部的集合属性就不会是空指针了