如何使用JOOQ store()方法?

时间:2013-11-21 09:00:38

标签: java sql jooq

当我问起JOOQ Here的行为时。@ Aaron Digulla告诉我使用store()方法。但在我的情况下我使用Transaction类做所有删除,更新,获取操作。这样的事情

        Transaction transaction = Transaction.current();
        int status = transaction.insert(myRecord);

但我想基于记录进行插入或更新(如果是新的,则插入否则更新)并且我得到store()方法处理这个但store()处理记录对象。

        myRecord.store();

当我这样做时,我得到异常No Connection configured,因为这个对象没有附加任何事务。在我的情况下,如何使用store()方法。还有一个问题是,它是否支持使用update方法批处理insertstore()

Transaction is our own class where we used 
TransactionFactory.getCurrentTransaction()
public static Transaction getCurrentTransaction() {
        return threadLocal.get();
    }

myRecord是由JOOQ

生成的Record类的Object

2 个答案:

答案 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中找到更多信息。