(Java/Mybatis)导致异常时未能在“catch”处回滚
在我对mybatis的有限经验中(Java/Mybatis)导致异常时未能在“catch”处回滚,java,mybatis,Java,Mybatis,在我对mybatis的有限经验中 我无法回滚事务中执行的所有SQL。 我尝试过多种不同的方法,但似乎都不管用。有什么想法吗?提前谢谢 在DB(mysql)中设置一个带有varchar(4)的字段 插入带有“name”和“12345”的字段 成功插入“name”(无回滚) 附言: 此项目未在Spring中运行 我需要抛出此异常并保持数据正确,这意味着回滚成功 SqlSession SqlSession=MybatisKit.openSqlSession(false); 试一试{ TestMappe
我无法回滚事务中执行的所有SQL。
我尝试过多种不同的方法,但似乎都不管用。有什么想法吗?提前谢谢
varchar(4)
的字段“name”
和“12345”
的字段“name”
(无回滚)Spring
中运行SqlSession SqlSession=MybatisKit.openSqlSession(false);
试一试{
TestMapper TestMapper=sqlSession.getMapper(TestMapper.class);
//成功地
testMapper.insert(“名称”);
//引发异常:数据对列太长。。。
testMapper.insert(“12345”);
提交();
}捕获(可丢弃的e){
sqlSession.rollback();
//无泄漏
sqlSession.close();
抛出新的运行时异常(“asd”);
}
sqlSession.close();
您确定引发了异常吗?可以对mysql进行配置,使其不会引发异常,截断值并继续执行。在这种情况下,不会发生回滚obviously@Roman是的,我肯定。我正在再现这种情况。要点是,如果抛出异常,NOT
在这种情况下,它可以NOT
回滚:如果发生异常,请包括错误消息和问题的堆栈跟踪。@Roman Konova错误消息:数据对列太长…
我的意思是。。。嗯。。不是这种情况和错误消息,点
是回滚失败…我需要抛出此异常并保持数据正确,这意味着回滚成功…您确定抛出了异常吗?可以对mysql进行配置,使其不会引发异常,截断值并继续执行。在这种情况下,不会发生回滚obviously@Roman是的,我肯定。我正在再现这种情况。要点是,如果抛出异常,NOT
在这种情况下,它可以NOT
回滚:如果发生异常,请包括错误消息和问题的堆栈跟踪。@Roman Konova错误消息:数据对列太长…
我的意思是。。。嗯。。不是这种情况和错误消息,点是回滚失败…我需要抛出此异常并保持数据正确,这意味着回滚成功。。。