如何"SELECT SQL_NO_CACHE"使用JOOQ?

How to "SELECT SQL_NO_CACHE" using JOOQ?

我试图找到它的文档,但失败了。有人知道吗?

有几种方法可以向 jOOQ 查询添加 MySQL 风格的提示:

使用.hint()

jOOQ 允许通过 .hint() 方法将 "hints" 传递给 SELECT 语句,如手册中所述:

http://www.jooq.org/doc/latest/manual/sql-building/sql-statements/select-statement/oracle-hints

SQL_NO_CACHE 提示应用于手册中给出的示例,您将得到:

DSL.using(configuration)
   .select(field1, field2)
   .hint("SQL_NO_CACHE")
   .from(table1)
   .fetch();

使用普通 SQL

您可以使用简单的 SQL 调整 SELECT 子句中的第一个字段以包含使用 DSL.field(String) 的提示。例如

DSL.using(configuration)
   .select(DSL.field("SQL_NO_CACHE {0}", field1.getDataType(), field1), field2)
   .from(table1)
   .fetch();

使用 ExecuteListenerVisitListener

您可以将 ExecuteListener or a VisitListener 注入到您的配置中,以便将所有相关的 SQL 查询字符串转换为在 SELECT 关键字之后包含提示。在您的情况下,这可能有点矫枉过正,但值得一提的是,这是解决此类问题的一种选择。