【问题标题】:Insert multiple rows in Jooq throws compilation error在 Jooq 中插入多行会引发编译错误
【发布时间】:2019-06-10 04:58:06
【问题描述】:

我有一个名为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

错误:

方法 execute() 未为该类型定义 插入设置步骤

  • 如何运行此插入?

  • 应该使用什么来代替InsertSetStep&lt;VarsRecord&gt;

  • 我应该为每一行执行一个insertInto 吗?

【问题讨论】:

    标签: java jooq


    【解决方案1】:

    尽量避免 DSL API as it might change in the next major release 的历史可变性。请改用DSLContext.batchInsert(Collection&lt;? extends TableRecord&gt;)

    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();
    

    【讨论】:

    • 由于某种原因,batchInsert 没有插入任何行,即使 list 包含记录。我在带有 CMT 的无状态 EJB 中运行此代码,为什么会发生这种情况?
    • @ps0604:是的,我很愚蠢。我忘记了execute() 电话
    猜你喜欢
    • 1970-01-01
    • 2018-03-03
    • 1970-01-01
    • 1970-01-01
    • 2017-08-02
    • 1970-01-01
    • 1970-01-01
    • 2014-03-26
    • 1970-01-01
    相关资源
    最近更新 更多