我正在寻找如何执行超过22行的jOOQ查询的示例。
http://www.jooq.org/doc/latest/manual/sql-building/column-expressions/row-value-expressions/
告诉我这是可能的,但我还没能找到一个例子。
有人能指出我正确的方向吗?
答案 0 :(得分:4)
从jOOQ 3.7开始(并且目前没有计划对此进行更改),22是可以类型安全方式获取的最大列数。超过22,您仍然可以执行查询,但jOOQ的API将不再跟踪您的记录类型。例如:
// Still type safe
Result<Record22<Integer, String, ..., Integer>> result =
DSL.using(configuration)
.select(INT_COLUMN1, STRING_COLUMN2, ..., INT_COLUMN22)
.from(TABLE)
.fetch();
// Add one more column, and "lose" type safety
Result<Record> result =
DSL.using(configuration)
.select(INT_COLUMN1, STRING_COLUMN2, ..., INT_COLUMN22, STRING_COLUMN23)
.from(TABLE)
.fetch();
从API用户的角度来看,API &#34;感觉&#34; 完全相同,无论您选择22列或更少列(安全键入),还是23列或更多列(没有类型安全)。
当您将类型安全UNION
查询与非类型安全查询进行比较时,差异可能会变得最明显:
// Still type safe
Result<Record22<Integer, String, ..., Integer>> result =
DSL.using(configuration)
.select(INT_COLUMN1, STRING_COLUMN2, ..., INT_COLUMN21)
.from(TABLE)
.union(
// ^^^^^ compilation error here
select(INT_COLUMN1, STRING_COLUMN2, ..., INT_COLUMN21, INT_COLUMN22)
.from(TABLE))
.fetch();
// Add one more column, and "lose" type safety
Result<Record> result =
DSL.using(configuration)
.select(INT_COLUMN1, STRING_COLUMN2, ..., STRING_COLUMN23)
.from(TABLE)
.union(
// ^^^^^ This compiles, even if it's wrong
select(INT_COLUMN1, STRING_COLUMN2, ..., STRING_COLUMN23, STRING_COLUMN24)
.from(TABLE))
.fetch();
答案 1 :(得分:0)
这似乎与此有关:jOOQ - support for UPDATE ... SET ... query with arbitrary degree
我对jooq一无所知,我只是在google上进行了快速搜索。