我在理解DaoManager的默认行为时遇到了问题。
To remove duplicates for products use GROUP BY p.id
这需要一个connectionSource - 而不是连接。 因此,如果我执行以下操作:
DaoManager.createDao(connectionSource, theClass);
该事务应限于单个连接(localConnection)。 DAO如何处理?或者它根本不处理它?</ p>
THX!
答案 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;已建立,然后被迫使用。
如果有人可以确认/反驳这一点 - 或者完全知道怎么做 - 请告诉我!