public User get(Long id){
return this.getHibernateTemplate().get(User.class, id);
}
public User load(Long id){
return this.getHibernateTemplate().load(User.class, id);
return this.getHibernateTemplate().get(User.class, id);
}
public User load(Long id){
return this.getHibernateTemplate().load(User.class, id);
}
以上两个方法get立即加载,如果获得对象不存在返回null,load延迟加载,如果要查询的对象不存在报异常。
load方法存在no session问题,因为是延迟加载的,所以这句代码执行完之后并没有去查数据,但前天页面真正用到数据时他才去查,可这时session就已经关闭了,所以就报异常了。可以通过在web.xml配置文件中添加
<filter>
<filter-name>openSessionInView</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>openSessionInView</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
即可。
注意这个过滤器要添加在struts.xml之前。
这个不是最好的解决办法,后期再写吧。