As of jOOQ 3.7 (and there are currently no plans to change it), 22 is the maximum number of columns that can be selected in a safe way. In addition to 22, you can still execute queries, but the jOOQ API will no longer track the type of your records. For example:
Result<Record22<Integer, String, ..., Integer>> result =
DSL.using(configuration)
.select(INT_COLUMN1, STRING_COLUMN2, ..., INT_COLUMN22)
.from(TABLE)
.fetch();
Result<Record> result =
DSL.using(configuration)
.select(INT_COLUMN1, STRING_COLUMN2, ..., INT_COLUMN22, STRING_COLUMN23)
.from(TABLE)
.fetch();
API API "" , , 22 ( ) 23 ( ).
UNION
UNION :
Result<Record22<Integer, String, ..., Integer>> result =
DSL.using(configuration)
.select(INT_COLUMN1, STRING_COLUMN2, ..., INT_COLUMN21)
.from(TABLE)
.union(
select(INT_COLUMN1, STRING_COLUMN2, ..., INT_COLUMN21, INT_COLUMN22)
.from(TABLE))
.fetch();
Result<Record> result =
DSL.using(configuration)
.select(INT_COLUMN1, STRING_COLUMN2, ..., STRING_COLUMN23)
.from(TABLE)
.union(
select(INT_COLUMN1, STRING_COLUMN2, ..., STRING_COLUMN23, STRING_COLUMN24)
.from(TABLE))
.fetch();