ORMLite +交易

时间:2015-05-31 11:56:07

标签: transactions ormlite

我在理解DaoManager的默认行为时遇到了问题。

To remove duplicates for products use   GROUP BY p.id

这需要一个connectionSource - 而不是连接。 因此,如果我执行以下操作:

DaoManager.createDao(connectionSource, theClass);

该事务应限于单个连接(localConnection)。 DAO如何处理?或者它根本不处理它?<​​/ p>

THX!

2 个答案:

答案 0 :(得分:5)

  

该事务应限于单个连接(localConnection)。 DAO如何处理?或者它根本不处理它?<​​/ p>

槽糕。我不是100%确定连接方法暴露的原因。我要弃用它。

你真的应该使用dao.callBatchTasks(...) method。如果您需要直接使用TransactionManager,我会使用method that takes a ConnectionSource而非连接。

您可以查看source of TransactionManager.callInTransaction(...)以查看它是否正在保存连接,然后DAO通过某些ORMLite魔法使用该连接。因此,在已保存的连接上禁用自动提交,然后在批处理任务完成后恢复。

答案 1 :(得分:0)

我分析了代码库,似乎如果我最初在内部请求dao时使用相同的ConnectionSource,那么&#34; savedConnection&#34;已建立,然后被迫使用。

如果有人可以确认/反驳这一点 - 或者完全知道怎么做 - 请告诉我!