我在使用Mybatis SqlSession实例回滚到特定保存点时遇到问题。我的Web应用程序中没有Spring框架。因此,只要第二次插入失败,我就会手动回滚事务。
private SqlSessionFactory sqlSessionFactory;
private MyRepositoryDAO()
{
sqlSessionFactory = MyBatisConnectionFactory.getSqlSessionFactory();
}
SqlSession session = sqlSessionFactory.openSession();
Savepoint savePointA = session.getConnection.setSavePoint();
if(insertionSuceeded)
{
session.commit();
}
else
{
session.rollback();
}
If(anotherInsertionSucceeded)
{
session.commit();
}
else
{
session.getConnection().rollback(savePointA)
}
如果我运行这段代码,我会收到以下错误。 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:SAVEPOINT 688bd22f_1442b1b7a9c__8000不存在
不确定我在这里缺少什么。 感谢
答案 0 :(得分:0)
在MySQL中,当执行不带保存点的提交或回滚时,将删除所有事务的保存点。
因此,如果首次提交或回滚anotherInsertionSucceeded==false
事务并删除所有保存点,则回滚到保存点失败。