当我问起JOOQ Here的行为时。@ Aaron Digulla告诉我使用store()方法。但在我的情况下我使用Transaction类做所有删除,更新,获取操作。这样的事情
Transaction transaction = Transaction.current();
int status = transaction.insert(myRecord);
但我想基于记录进行插入或更新(如果是新的,则插入否则更新)并且我得到store()
方法处理这个但store()
处理记录对象。
myRecord.store();
当我这样做时,我得到异常No Connection configured
,因为这个对象没有附加任何事务。在我的情况下,如何使用store()
方法。还有一个问题是,它是否支持使用update
方法批处理insert
或store()
?
Transaction is our own class where we used
TransactionFactory.getCurrentTransaction()
public static Transaction getCurrentTransaction() {
return threadLocal.get();
}
myRecord是由JOOQ
生成的Record类的Object答案 0 :(得分:0)
我建议您按照examples from the manual说明如何从UpdatableRecord
/ Configuration
创建新的DSLContext
(在您的情况下,这可能对应于任何{ {1}}是:
Transaction
请注意对DSLContext.newRecord(Table)
的调用。
请在DSLContext.batchStore()
上考虑Javadoc。当然,您可以在这里查看同事(我认为?):How to convert list into UpdatableRecord?
答案 1 :(得分:0)
五年后,如果您还使用Java和jOOQ,则可以尝试使用3.11.2或更高版本。
在3.10.6〜3.11.1的版本中jOOQ出了点问题。您可以在Regression in UpdatableRecord.store() and update() methods when used with connection pools中找到更多信息。