首页 > 解决方案 > 在 Jooq 中插入多行会引发编译错误

问题描述

我有一个名为的表VARS,它有两列VAR_NAMEVAR_TYPE. 我还有一个要在此表中插入的 POJO 列表。POJO 类被调用,并且有两个名为和Var的字段。varNamevarType

请注意,字段匹配,因此Jooq可以在插入中派生和应用。

当我尝试插入 Vars 列表时,出现编译错误:

    InsertSetStep<VarsRecord> insert = create.insertInto(VARS);

    for (Var var: vars) {
        VarsRecord rec = new VarsRecord();
        rec.from(var);
        insert.set(rec);
    }

    insert.execute();   // <-- error here

错误:

未定义 InsertSetStep 类型的 execute() 方法

标签: javajooq

解决方案


尽量避免 DSL API 的历史可变性,因为它可能会在下一个主要版本中发生变化。改用DSLContext.batchInsert(Collection<? extends TableRecord>)

List<VarsRecord> list = new ArrayList<>(vars.size());
for (Var var : vars) {
    VarsRecord rec = new VarsRecord();
    rec.from(var);
    list.add(rec);
}
create.batchInsert(list).execute();

推荐阅读