关于jfinal的事务问题
@Before({Tx.class,DbDesignLogInterceptor.class})
public void add() {
try {
TblInfo tblInfo = getModel(TblInfo.class);
Employe employe = AccountHelper.getEmploye(getRequest());
tblInfo.setCreator(employe.getNick());
tblInfo.setLastModifier(employe.getNick());
tblInfo.setLastModifyTime(new Date());
tblInfo.setCreated(new Date());
tblInfo.save();
long tblId = tblInfo.getId();
FieldInfo fieldInfo = getModel(FieldInfo.class);
fieldInfo.setFieldNameCn("主键");
fieldInfo.setTblId(tblId);
fieldInfo.setCreated(new Date());
fieldInfo.setCreator(employe.getNick());
fieldInfo.setLastModifier(employe.getNick());
fieldInfo.setLastModifyTime(new Date());
fieldInfo.save();
render(MgrJsonRender.success());
} catch (Exception e) {
log.error("添加表信息失败!", e);
render(MgrJsonRender.error());
}
}
如上代码 我的controller中有两个model 同时保存 第二个model保存失败 按理说第一个model应该事务回滚,但第一个model仍然保存成功,请问这个问题怎么解决 ,不能用jfinal的声明事务吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
我说的是aop事务的回滚机制,而不是数据库的全部事务。
回复
我也觉得aop的事物回滚,特定情况下问题很大.
引用来自“南湖船老大”的评论
楼主看来一直没理解AOP事务啊。
要有异常才谈得上事务回滚,换句话来说,没有异常的话,还要事务回滚干嘛?没有异常,就表示正常喽,正常就正常喽,该干啥干啥,有啥好回滚的。很简单的一个逻辑啊
谢谢 我已经明白了
楼主看来一直没理解AOP事务啊。
要有异常才谈得上事务回滚,换句话来说,没有异常的话,还要事务回滚干嘛?没有异常,就表示正常喽,正常就正常喽,该干啥干啥,有啥好回滚的。很简单的一个逻辑啊
你把异常吃了,事务的aop捕获不到异常了,自然不会回滚了
嗯 明白了 感谢
@Jfinal
最近公司要准备换框架 我极力推荐jfinal 已经做了两次演示 还特地做了实例项目 无奈嘴有点笨 尽力吧
回复
建议详细看一次 jfinal 手册,业务层 AOP 有例子可以参考,感谢支持 jfinal 发展