首先 我的数据库 是 mysql InnoDB @Jfinal
代码中我故意设置 code 的数值 超过 int 类型 数据库 会报错
"com.mysql.jdbc.MysqlDataTruncation: Data truncation: Out of range value for column 'code' at row 1"两种方式 第一个更新都成功了, 是不是事务不是这么写的?
@Before({Tx.class}) public void cash() { Award.dao.findById(14).set("haveReceiveCount", 1).update(); User.dao.findById(6).set("code", "1234566778999").update(); //Db.update("UPDATE award set haveReceiveCount=haveReceiveCount+1 where id=14"); //Db.update("UPDATE user set code=1234566778999 where id=6"); }
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
前面两行代码涉及到数据读到了内存,然后再写回数据库,默认的事务级别已经不能满足要求。解决办法一是可以前两句改成第三句一样的Db.update(...)形式,二是可以提升事务级别回复<aclass='referer'target='_blank'>@bibi:是innodb回复<aclass='referer'target='_blank'>@JohnsonZ:如果你用的mysql,必须把表的存储引擎设置为InnoDB不然没法支持事务恩,试过,上面的代码,我注释的两句就是你说的那种吧!确实不行的!事务级别我去试试,谢谢了!前两句改成Db.update(...)的形式你确定试过?ActiveRecordPlugin对象创建的时候可以带事务级别的参数transactionLevel默认是2,改成4试试不是啊,第三第四句那种写法也不能正常使用事务呢,我两种都试过了然后提升事务级别要如何操作呢?