JFinal的声明事务问题

davidbdj 发布于 2016/03/18 11:33
阅读 247
收藏 0

MySQL连接为什么挂死了?别踩坑!>>>

@JFinal 你好,想跟你请教个问题:

我使用Tx.class想实现数据库事务回滚,不过没有成功:

@Before(Tx.class) public boolean addTicket(int tgId) {     ...     boolean r = Db.save(Ticket.getTableName(tgId), record);     ...
此业务方法中后面故意写了抛出异常的代码,前面的save操作并没有回滚。

是还需要配置什么么?另外外层Controller用了@Before({IocInterceptor.class, AuthInterceptor.class}),会不会对这个有影响?

加载中
0
JFinal
JFinal
   保障一下程序执行进入到了 Tx 拦截器的 conn.rollback() 这一行代码,单步调试一下,另外 mysql 事务需要 InnoDB 引擎
0
davidbdj
davidbdj

Tx放在Service层没有执行到Tx,把Tx放在Controller中可以了。

davidbdj
davidbdj
回复 @JFinal : 谢谢
JFinal
JFinal
放到 Service 层是绝对可以的,不过要仔细看一下 jfinal 手册,其中讲到了业务层 AOP 的触发方式:控制层AOP会自动触发,而业务层AOP需要使用 enhance 或者 duang 方法对业务进行增强后才可以触发
返回顶部
顶部