繁体   English   中英

如何获得生成表的行表示?

[英]How to get a Row representation of a generated table?

我想获得生成的JOOQ表类型的Row[N]<...>表示形式。 我想在这种情况下使用它:

val p = PROJECTS.`as`("p")
val pmu = PROJECTMEMBERUSERS.`as`("pmu")
val query = db
    .select(p.asterisk(), DSL.arrayAgg(DSL.rowField(<-- insert Row[N]<...> here -->)))
    .from(p.join(pmu).on(p.ID.eq(pmu.PROJECTID)))
    .groupBy(p.ID)

我已经尝试插入pmu.fieldsRow() ,但是DSL.rowField(...)需要另一个参数类型。

错误:(39,58)Kotlin:使用提供的参数无法调用以下函数[...]

该问题是在JOOQ DSL中使用带有连接别名的PosgreSQL array_agg的后续问题,但应独立存在。

jOOQ 3.11中缺少功能

jOOQ代码生成器中似乎缺少一项功能,它是一种生成的Table.fieldsRow()重写的方法,该方法提供了更窄的协变Row[N]<...>返回类型。 我为此创建了一个功能请求,将在jOOQ 3.12中实现: https : //github.com/jOOQ/jOOQ/issues/7809

还丢失了一个重载的DSL.rowField(RowN)方法: https : //github.com/jOOQ/jOOQ/issues/7810

解决方法,显式列出列

这是最明显的解决方法,您显然要避免:明确列出所有列名:

row(pmu.COL1, pmu.COL2, ..., pmu.COLN)

解决方法,使用生成的记录

生成的记录中已经存在这样的生成方法。 作为解决方法,您可以使用

new ProjectMembersUsersRecord().fieldsRow();

解决方法,扩展代码生成器

通过使用自定义代码部分扩展JavaGenerator ,您现在可以自己实现#7809:

https://www.jooq.org/doc/latest/manual/code-generation/codegen-custom-code

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM