目前我正在从pojos列表映射到记录,我希望能够一次插入多行。我如何在JOOQ中用一个事务做到这一点?
List<Record> recordList = receiverList.stream().map(r -> {
return dslContext.newRecord(Table, r);
}).collect(Collectors.toList());
我曾尝试将列表放入“值”中,但出现异常“值的数量必须与字段的数量匹配”
dslContext.insertInto(Table).values(recordList);
你也可以做:
var insertStepN = dslContext.insertInto(Table).set(dslContext.newRecord(Table, recordList.get(0));
for (var record : recordList.subList(1, recordList.size()) {
insertStepN = insertStepN.newRecord().set(dslContext.newRecord(Table, record));
}
insertStepN.returning().fetch().into(YourClass.class);
这样,您可以使用returning()返回插入的值,而使用batchInsert()则无法返回。
您的错误是因为。值(...)正在等待字段值而不是记录。
也许你可以批量执行:
dslContext.batchInsert(recordList);
正如Lukas提到的,它将在一个原子的jdbc语句中执行它
我有一个表USER\u ROLES,有5列。此外,还有一个类UserRole,其字段和名称的数量与USER\u角色相同。 我试图插入一行而不指定列名: 但是当我尝试创建行时,我得到了这个错误: 我必须指定列名吗?
所以我只使用Jooq来构建查询,而不是执行查询,如下所示: 对象可以执行查询conn.asyncExecute(org.jooq.query query)。所以我的问题是,如何创建类型为org.jooq的批插入查询。查询?具体来说,给定一个列表 请注意,我知道其他问题询问如何使用Jooq进行批处理插入,但他们使用Jooq执行查询就像下面Jose Martinez的回答一样,而这里我只使用Jooq构
OrientDB是一个NoSQL数据库,可以存储文档和面向图形的数据。 NoSQL数据库不包含任何表,那么要如何将数据作为记录插入?在这里,您可以以类,属性,顶点和边的形式查看表数据,类表就像表,属性就像表中的文件。 可以在OrientDB中使用模式定义所有这些实体。 属性数据可以被插入到一个类中。 插入命令在数据库模式中创建一条新记录。 记录可以无模式或遵循一些指定的规则。 以下语句是“插入记录
Jooq生成器是否支持扩展提供给生成器的自定义类? 我想生成扩展自定义提供类的记录,该类将扩展TableRecordImpl。 我想进入继承链,其中UpdateableRecordImpl将扩展MyRecord,MyRecord将扩展TableRecordImpl?
我有一个简单的方法(使用jooq),基本上是这样做的: 在表'MY_OBJECT'中,我有一个字段'id',其定义为: 每当我运行上面提到的代码时,都会出现错误: 在我看来,问题是jOOq试图将值写入标识列。MyConvertor将其保留为null的原因是,该值将由db生成。如何使jooq不尝试向该字段写入null?
问题内容: 我遵循“ 是否可以编写数据类型转换器来处理postgresJSON列”中的答案? 实现nodeObject转换器。 然后,我尝试使用可更新的记录来插入一条记录,但出现了 “ org.jooq.exception.SQLDialectNotSupportedException:方言POSTGRES不支持类型为org.postgresql.util.PGobject的类”。 我该如何解决?