Hibernate 事务问题

东家阿哥 2010-04-16 11:59:53
先上代码
<!-- 配置事务的传播特性 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="find*" read-only="true" propagation="NOT_SUPPORTED"/>
<tx:method name="get*" read-only="true" propagation="NOT_SUPPORTED"/>
<tx:method name="query*" read-only="true" propagation="NOT_SUPPORTED"/>
<tx:method name="load*" read-only="true" propagation="NOT_SUPPORTED"/>
<tx:method name="*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>

<!-- 配置哪些类哪些方法使用事务 -->
<aop:config proxy-target-class="true">
<aop:pointcut id="allManagerMethod"
expression="(execution(* com.teamsun.drp.service..*.*(..))) " />
<aop:advisor advice-ref="txAdvice"
pointcut-ref="allManagerMethod" />
</aop:config>

这一层次就是service层,上面是我配置的事务
public void a()throws Exception{
dao.update();
b();
}
public void b()throws centerException(){
....
throw new centerException("有错");
}


我纳闷的是,我抛了异常。怎么还提交事务呢,update都执行了。。咋解决
...全文
146 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
东家阿哥 2010-04-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 qq262067995 的回复:]
<aop:config proxy-target-class="true">
<aop:pointcut id="allManagerMethod"
expression="execution(* com.teamsun.drp.service.*.*(..)) " />
<aop:advisor advice-ref="txAdvice"
pointcut-ref="al……
[/Quote]
你这个事务配置没错。比我少了个点。你这个是能到这个包下的所有类
我那个能到这个包下所有子包和所有类
qq262067995 2010-04-16
  • 打赏
  • 举报
回复
<aop:config proxy-target-class="true">
<aop:pointcut id="allManagerMethod"
expression="execution(* com.teamsun.drp.service.*.*(..)) " />
<aop:advisor advice-ref="txAdvice"
pointcut-ref="allManagerMethod" />
</aop:config
东家阿哥 2010-04-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yetaodiao 的回复:]
Exception处理细化些
[/Quote]
这位兄弟。。咋细化。我不明白为什么会提交事务啊?
东家阿哥 2010-04-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 kbyst 的回复:]
Java code

public void a()throws Exception{
dao.update();
b();
}
public void b()throws centerException(){
....
throw new centerException("有错");
}



dao.update(); 在b(); 之前执行 异常发生在……
[/Quote]
不能写在里面。
b()方法不是抛出异常了吗。。理论上update不会成功啊,会回滚啊。。怎么会这样呢!郁闷
  • 打赏
  • 举报
回复
Exception处理细化些
kbyst 2010-04-16
  • 打赏
  • 举报
回复

public void a()throws Exception{
dao.update();
b();
}
public void b()throws centerException(){
....
throw new centerException("有错");
}


dao.update(); 在b(); 之前执行 异常发生在b();里面 有什么问题吗?
还是没理解楼主的意思呢?

把dao.update();写在b();方法里 是这个意思不
bunrise 2010-04-16
  • 打赏
  • 举报
回复
<aop:config>
<aop:advisor
pointcut="execution(*
com.teamsun.drp.service..*.*(..))"
advice-ref="txAdvice" />
</aop:config>


没看出啥问题,这样改试试
神之泪花 2010-04-16
  • 打赏
  • 举报
回复
事务回滚需要自己配制不?

Hibernate我也刚用不久,
bunrise 2010-04-16
  • 打赏
  • 举报
回复
在后面指明rollback-for="centerException"

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧