我们在用 spring+hibernate的时候,默认的加载方式是延迟加裁,于是当我们在如:child.getParent().getName()
这样的形式取值的时候,将会报错(session alread closed...)之类的错误,原因是spring在完成一次操作后,会将session自动关闭,解决办法如下:
在web.xml中加入OpenSessionInViewFilter,如下:
<
filter
>
< filter-name > hibernateFilter </ filter-name >
< filter-class >
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</ filter-class >
< init-param >
< param-name > singleSession </ param-name >
< param-value > false </ param-value >
</ init-param >
</ filter >
< filter-mapping >
< filter-name > hibernateFilter </ filter-name >
< url-pattern > /* </ url-pattern >
</ filter-mapping >
< filter-name > hibernateFilter </ filter-name >
< filter-class >
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</ filter-class >
< init-param >
< param-name > singleSession </ param-name >
< param-value > false </ param-value >
</ init-param >
</ filter >
< filter-mapping >
< filter-name > hibernateFilter </ filter-name >
< url-pattern > /* </ url-pattern >
</ filter-mapping >
即可