JFinal 事务问题

Jobsz 发布于 2014/11/21 16:55
阅读 161
收藏 1
@JFinal 你好,想跟你请教个问题:


在非servlet环境下使用声明式事物,出现异常没有回滚






@Before(Tx.class)
public void testTran(){


@Override
public boolean run() throws SQLException {*/


AdminLogin  admin = new AdminLogin();


admin.set("account", "").set("salt", "512").set("password", "512121");


boolean flag = admin.set("account", "admin3").set("salt", "512").set("password", "512121").save();


System.out.println(flag);


UserDetail user = new UserDetail();


boolean flag2 = user.setAttrs(user.dao.findById("1")).set("meetid", 600).save();//由于数据库的依赖关系此处代码会执行失败,但是flag处的代码依旧插入了数据。


System.out.println(flag2);


}


JUnit中的代码


@Test
public void testTx1() throws Exception{


TxService ts = new TxService();


ts.testTran();


}


@BeforeClass
public static void setUpBeforeClass() throws Exception {


C3p0Plugin c3p0Plugin = new C3p0Plugin("jdbc:mysql://127.0.0.1/meet?characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull","root","4jty");
c3p0Plugin.start();


ActiveRecordPlugin arp = new ActiveRecordPlugin(c3p0Plugin);
arp.addMapping("meet_user_detail","meetid",UserDetail.class);
arp.addMapping("meet_user_login","meetid", UserLogin.class);


arp.addMapping("meet_topics", Topic.class);
arp.addMapping("meet_admin_login", AdminLogin.class);


arp.start();


}




加载中
0
台俊峰
台俊峰
非servlet环境下当然是不行的Tx是个Inteceptor,不会生效的。
0
JFinal
JFinal
Interceptor 与 Controller 是配套使用的,所以 Tx 用于非 Controller 之上不会生效。建议用 Db.tx(...) 来做事务
返回顶部
顶部