[英]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代码生成器中似乎缺少一项功能,它是一种生成的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.