Java 约克。如何在一个事务中使用insertInto()将多个字段记录到DB
我需要为某些表的多个未指定字段创建一个事务,并执行.insertInto()。我有一个问题,事务运行成功,但没有存储任何记录。我认为root子句没有正确执行.insertInto()方法,或者DSLContext与包装器配置的交互失败。如果有任何建议,我将不胜感激 我有两个类中的两个方法(表处理和DAL)。事务创建和发送到DAL类字段以插入的第一步。第二,DAL类,用于插入新字段Java 约克。如何在一个事务中使用insertInto()将多个字段记录到DB,java,sql,transactions,jooq,insert-into,Java,Sql,Transactions,Jooq,Insert Into,我需要为某些表的多个未指定字段创建一个事务,并执行.insertInto()。我有一个问题,事务运行成功,但没有存储任何记录。我认为root子句没有正确执行.insertInto()方法,或者DSLContext与包装器配置的交互失败。如果有任何建议,我将不胜感激 我有两个类中的两个方法(表处理和DAL)。事务创建和发送到DAL类字段以插入的第一步。第二,DAL类,用于插入新字段 public Boolean insertToMainDB(List<TableForMainDb&g
public Boolean insertToMainDB(List<TableForMainDb> mainTables) throws AppDataAccessLayerException {
Boolean InsertTransactSuccessFlag = false;
try {
TransactionalCallable <Boolean> transactional = new TransactionalCallable<Boolean>() {
@Override
public Boolean run(Configuration configuration) throws Exception {
for (TableForMainDb table : mainTables) {
table.getRecorder().recordToDB(table, configuration);
}
return true;
}
};
InsertTransactSuccessFlag = context.transactionResult(transactional);
} catch (DataAccessException ex) {
throw new AppDataAccessLayerException(ex);
}
return InsertTransactSuccessFlag;
}
事务运行成功,但未将记录插入数据库
在调试模式下,我看到DSLContext和配置的对象已满,并且包含插入日期的记录(字段)。
垃圾堆在下面。事务性字段在上下文中为false
配置
默认配置[
连接=真,
事务性=真,
方言=博士后,
数据={org.jooq.configuration..},
设置=
DSLContext
默认配置[
连接=真,
事务性=假,
方言=博士后,
数据={},
设置=…您永远不会要求您的声明感谢卢卡斯的评论和伟大的JOOQ 我们将insert实现为
.insertInto(Table<Record>, Fields[], Object[] ).execute()
您好。这是您的解决方案吗?或者您是想编辑您的问题吗?我不确定您是否还需要任何帮助…您好Lukas,是的,它可以工作,我有点想知道我是否可以调用.insertInto(),将字段数组[]作为参数,也许它将有助于添加到doc.Hmm。您认为缺少什么?
.insertInto(Table<Record>, Fields[], Object[] ).execute()
DSL.using(configuration).insertInto(DSL.table(tableName),
fieldsAndValuesObject.getArrayAllFields())
.values(fieldsAndValuesObject.getArrayAllValues()
)
.execute();