关于Spring的OpenSessionInViewFilter的Hibernate会话

[/b]
这个表有N个外表关联,然后再web.xml中加上了过滤,成功的在web展示页面中显示每个BcmGood的数据,但是我加了WorkHibernateFilter过滤以后,其他(单表业务)模块的根本不能做相应业务处理(saveorupdate,del),望大家多多指教,qq:289450605 一直在线。
[code="java"]

WorkHibernateFilter
com.***.fiter.IDEHibernateFilter


WorkHibernateFilter
/*

[/code]

IDEHibernateFilter.java
[code="java"]
public class IDEHibernateFilter extends OpenSessionInViewFilter
{
protected Session getSession(SessionFactory sessionFactory)
throws DataAccessResourceFailureException
{
Session session = SessionFactoryUtils.getSession(sessionFactory, true);
session.setFlushMode(FlushMode.AUTO);
return session;
}
}
[/code]

[b]问题补充:[/b]
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">








PROPAGATION_REQUIRED
PROPAGATION_REQUIRED
PROPAGATION_REQUIRED



[b]问题补充:[/b]
在没有加OpenSessionInViewFilter过滤的时候,单表业务成功操作,显示相应结果。然后BcmGood是一张一对多表,用列表显示时报session close,然后加上OpenSessionInViewFilter过滤,其它(一对一)表的业务像del和saveorupdate,业务无法操作成功。这个执行过程中,无异常抛出。

OpenSessionInViewFilter作用就是在调用你写的代码前绑定session,只要保证它早于你的Action执行就可以了,
给你个参考的配置:
<?xml version="1.0" encoding="UTF-8"?>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<!-- *************************************************************************start******** -->
demo
<!-- **********************************************************************context-param*********** -->
<!--spring配置-->

contextConfigLocation
classpath*:appContext*.xml

<!-- ***********************************************************************listener********** -->
<!--spring配置-->


org.springframework.web.context.ContextLoaderListener


<!-- **********************************************************************filter*********** -->
<!-- 中文过滤器 -->

Set Character Encoding
com.syj.util.SetCharacterEncodingFilter

encoding
GBK


<!-- hibernate3 OpenSessionInView 模式 -->

OpenSessionInViewFilter

com.syj.util.OpenSessionInViewFilter


<!--struct配置 -->

Struts2

org.apache.struts2.dispatcher.FilterDispatcher


<!-- **********************************************************************filter-mapping*********** -->
<!-- 中文过滤器 -->

Set Character Encoding
/*

<!-- hibernate3 OpenSessionInView 模式 注意:一定配置struct mapping的前面-->

OpenSessionInViewFilter
.do

<!--struct配置 注意:一定配置OpenSessionInView mapping的后面-->

Struts2
/

<!-- ************************************************************************servlet********* -->
<!-- 负责系统初始化的启动Servlet -->

initServlet
com.syj.action.InitServlet
1

<!-- 配置图形码 -->

codeFact
com.syj.util.CodeFact

<!-- jfreechart显示图表 -->

DisplayChart

org.jfree.chart.servlet.DisplayChart


<!-- ************************************************************************servlet-mapping********* -->
<!-- 负责系统初始化的启动Servlet -->

initServlet
/initServlet

<!-- 配置图形码 -->

codeFact
/codeFact

<!-- jfreechart显示图表 -->

DisplayChart
/servlet/DisplayChart

<!-- *************************************************************************jsp-config******** -->

<!--syj标签库配置-->

syj.tld
/WEB-INF/syj.tld


<!-- *************************************************************************end******** -->

[quote]其他(单表业务)模块的根本不能做相应业务处理(saveorupdate,del)[/quote]
能不能具体说明一下?

查看一下你的事务配置方式好么?

执行不了,抛异常了吗?

没有异常抛出,也没有执行成功,建议调试了看看是否真的没有异常,或是被catch没有打印,或是事务没有成功执行,或是其他。只能逐步调试了看了