【问题标题】:How to Initialize a custom row type Jooq Record如何初始化自定义行类型 Jooq 记录
【发布时间】:2018-01-09 01:05:43
【问题描述】:

与此问题类似:How to initialise and create a ResultSet and Record in Jooq?,但使用自定义行类型记录而不是简单的表记录。 我正在实例化一个 jooq 记录以用于模拟,但该记录有超过 22 列并且包含来自许多连接表的行,所以我使用的是 RecordImpl。

RecordImpl r1 = new RecordImpl();
r1.set(COURSE.ID.as("course_id"), 1);

这会引发异常

java.lang.IllegalArgumentException:字段(“course_id”)不包含在行()中

注意我没有直接使用 RecordImpl 因为它是包私有的,所以我使用了一个

public class RecordWrapper extends RecordImpl {}

如何直接在无类型的 Jooq 记录上设置字段?

【问题讨论】:

    标签: java jooq


    【解决方案1】:

    您不应该实例化或扩展作为 jOOQ 内部 API 一部分的 RecordImpl。请改用DSLContext.newRecord(),例如

    Record1<Integer> r1 = ctx.newRecord(COURSE.ID.as("course_id")).values(1);
    

    【讨论】:

    • 这是否意味着我需要明确提及所有字段及其值,例如ctx.newRecord(COURSE.ID.as("course_id"), COURSE.ID.as("course_name"),...).values(1, "name",...);
    • @nabroyan:当然可以。记录就像地图。它不能只有价值观。它也需要键(字段)。
    • 我明白了。如果我有一个包含大量连接的大型查询并且 SELECT 包含 30 多列怎么办?似乎jOOQ 最多支持 22 个?有没有办法模拟这种情况?
    • @nabroyan:你能问一个新问题吗?我缺少一些上下文。
    • 我发布了一个包含更多详细信息的新问题 :)
    猜你喜欢
    • 2021-05-31
    • 1970-01-01
    • 2018-09-12
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-16
    • 2011-08-28
    相关资源
    最近更新 更多