如何使用LIMIT子句生成SQL语句但在jOOQ中没有OFFSET子句?

时间:2014-08-22 02:38:30

标签: java sql postgresql jooq

我正在尝试使用jOOQ生成以下SQL语句:

SELECT id, name
FROM students
ORDER BY id DESC
LIMIT 50;

使用jOOQ生成上述语句:

String sql = DSL.using(SQLDialect.POSTGRES).select(
  field("id"),
  field("name"))
  .from("students")
  .orderBy(field("id").desc())
  .limit(inline(50))
  .getSQL();

但我得到以下内容:

select id, name from students order by id desc limit 50 offset ?

如何删除OFFSET子句?我知道我可以将偏移值指定为0,这与省略OFFSET子句相同,但我想知道是否可以从生成的SQL语句中完全删除它。

谢谢。

1 个答案:

答案 0 :(得分:2)

你是对的,jOOQ 3.4.2当前为PostgreSQL呈现OFFSET子句,无论用户是否通过API指定它。这可能会有所改善。我为此创建了问题#3577

目前,还没有真正容易的"在这种情况下更改生成的SQL的方法。您可以实现ExecuteListener,并修补生成的SQL - 但您还必须摆脱绑定值。