我想将以下SQL语句转换为jooq语法:
select max(table.column) from table group by table.anothercolumn
我试过:
dsl.select(table.colum, max())
以及DSL.select(table.colum, max())
以及dsl.select(table.colum.max())
以及DSL.select(table.colum.max())
但与Eclipse相应,这些语法都不正确。。。
如有任何帮助,我们将不胜感激。
使用jOOQ开始时最常见的错误是:
无代码生成
jOOQ手册和其他Stack Overflow问题中的大多数示例都假设您正在使用jOOQ的代码生成器对模式进行逆向工程。这意味着您将在生成的类中生成类似table
(更可能是TABLE
(的对象。
您需要静态导入所有这些对象,例如使用
import static com.example.generated.Tables.*;
现在,您可以引用静态导入的所有表frmo,以及它们分别来自表的列
没有静态导入DSL.*
最有效使用jOOQ的另一个先决条件是从DSL
:静态导入所有方法
import static org.jooq.impl.DSL.*;
这将允许您使用不合格的max(Field)
聚合函数。
这两个先决条件都记录在手册中关于如何阅读手册的部分中。它们都是可选的,您可以在没有静态导入的情况下使用jOOQ,并始终完全限定表达式。
工作示例
一旦您设置了代码生成和静态导入,以下查询就会起作用:
DSLContext dsl = DSL.using(connection, dialect);
Result<?> result =
dsl.select(max(TABLE.COLUMN))
.from(TABLE)
.groupBy(TABLE.ANOTHERCOLUMN)
.fetch();
按表从表组中选择最大值(表.列(。另一列