Spring - 提交事务不插入记录但不抛出异常

时间:2017-09-05 11:28:05

标签: java database spring transactions mybatis

在Spring + MyBatis中,我使用以下代码在事务中对Postgres数据库执行一些更改:

DefaultTransactionDefinition definition = new DefaultTransactionDefinition();
TransactionStatus status = dataSourceTransactionManager.getTransaction(definition);
try {
    // do insert, updates, deletes etc. on the DB
    dataSourceTransactionManager.commit(status);
    return stuffWithPksOfInsertedRecords;
} catch (Exception e) {
    dataSourceTransactionManager.rollback(status);
    return originalStuff;
}

问题是有时我的代码会返回 stuffWithPksOfInsertedRecords (即通过提交而不会抛出异常),但实际上插入到事务中的记录在提交后不会写入数据库,即我现在拥有实际上并未存储在数据库中的对象。

这种行为有什么可能的解释吗?我做错了吗?

请注意,交易可能需要一些时间才能完全执行,即使是几分钟,这可能是问题吗?默认交易可以到期吗?

谢谢

0 个答案:

没有答案