精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2013-02-25
最后修改:2013-02-26
http://localhost:8080/ALAN/helloWorldaa.action。数据库配置自己修改下在src目录下的jdbc.properties文件中。数据库操作语句在,login.action.dao.config.hello.xml中。 工程在附件中,忘各位能帮我看看 以下spring 配置部分内容: <!-- 事务管理配置 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource"> <ref local="dataSource" /> </property> </bean> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="insert*" propagation="REQUIRED"/> <tx:method name="delete*" propagation="REQUIRED"/> <tx:method name="save*" propagation="REQUIRED"/> <tx:method name="update*" propagation="REQUIRED"/> </tx:attributes> </tx:advice> <aop:config > <aop:pointcut id="allManagerMethod" expression="execution(* login.dao.impl.HelloDaoImpl.*(..))" /> <aop:advisor pointcut-ref="allManagerMethod" advice-ref="txAdvice" /> </aop:config> DAO实现类目录为login.dao.impl.HelloDaoImpl.java. 具体代码如下: package login.dao.impl; import java.util.List; import login.dao.HelloDao; import CommUtil.dao.BaseDao; public class HelloDaoImpl extends BaseDao implements HelloDao{ public List<?> getHello() { // TODO Auto-generated method stub return super.queryforlist("getHello", null); } public void inserttest() { // TODO Auto-generated method stub try{ super.getSqlMapClient().insert("insertdd",null); //这个方法sql书写时正确的会向表中增加数据。 super.getSqlMapClient().insert("insertaa",null); //这个方法我人为造了个错误,会抛出异常进入catch。 }catch(Exception e ){ e.printStackTrace(); } } } 问题来了。我按照这个配置运行了。为什么无法回滚,返回第一个insert新增进去的数据呢? 求指点。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2013-02-26
在配置上加上-Exception
<prop key="save*">PROPAGATION_REQUIRED,-Exception</prop> |
|
返回顶楼 | |
发表时间:2013-02-26
你的这个DAO纳入到spring的context中了吗?
|
|
返回顶楼 | |
发表时间:2013-02-26
dwangel 写道 你的这个DAO纳入到spring的context中了吗?
额。不知道你说的DAO纳入SPRING的context我不知道是什么意思啊? HelloDaoImpl 我在spring中配置过的,可以调用ibatis的sql的。可以正确执行。 |
|
返回顶楼 | |
发表时间:2013-02-26
在你的第二个Insert发生的异常被你吃了,应当将它抛出,spring默认事务回话的异常只针对RuntimeException和其子异常吧,试试看。
|
|
返回顶楼 | |
发表时间:2013-02-26
zrz_1989 写道 在你的第二个Insert发生的异常被你吃了,应当将它抛出,spring默认事务回话的异常只针对RuntimeException和其子异常吧,试试看。
正解!你自己把异常捕获了,spring怎么知道调用回滚呢?应该记录异常并继续向外抛 |
|
返回顶楼 | |
发表时间:2013-02-26
zrz_1989 写道 在你的第二个Insert发生的异常被你吃了,应当将它抛出,spring默认事务回话的异常只针对RuntimeException和其子异常吧,试试看。
方法后跟上 throws SQLException,没有效果。还是没有回滚 |
|
返回顶楼 | |
发表时间:2013-02-26
scriptguy 写道 zrz_1989 写道 在你的第二个Insert发生的异常被你吃了,应当将它抛出,spring默认事务回话的异常只针对RuntimeException和其子异常吧,试试看。
正解!你自己把异常捕获了,spring怎么知道调用回滚呢?应该记录异常并继续向外抛 方法后跟上 throws SQLException,没有效果。还是没有回滚 |
|
返回顶楼 | |
发表时间:2013-02-26
oezx 写道 dwangel 写道 你的这个DAO纳入到spring的context中了吗?
额。不知道你说的DAO纳入SPRING的context我不知道是什么意思啊? HelloDaoImpl 我在spring中配置过的,可以调用ibatis的sql的。可以正确执行。 就是说这个dao是不是和aop的advice在同一个applicationContext里存在 |
|
返回顶楼 | |
发表时间:2013-02-26
dwangel 写道 oezx 写道 dwangel 写道 你的这个DAO纳入到spring的context中了吗?
额。不知道你说的DAO纳入SPRING的context我不知道是什么意思啊? HelloDaoImpl 我在spring中配置过的,可以调用ibatis的sql的。可以正确执行。 就是说这个dao是不是和aop的advice在同一个applicationContext里存在 是在同一个spring配置文件中存在。 我已经把源码放在贴子的附件里了。这个问题还没有解决。 |
|
返回顶楼 | |