java - 使用 jOOq 时如何将参数值用括号括起来?

标签 java sql jooq sap-commerce-cloud flexible-search

我正在使用 jOOq 来编写查询,除了我正在使用供应商特定类型的 SQL... 以进行特定的灵活搜索。 SQL 和 flexiSearch 之间的主要区别在于参数值包含在大括号中。例如

SELECT * FROM {Product} WHERE {code} LIKE ‘%al%’

所以我要做的是让 jOOq 自动拦截查询构建过程以包含括号。

查看文档,似乎我应该实现某种执行监听器?但我不确定在那之后该怎么做。谢谢

最佳答案

您确实可以实现一个 ExecuteListener 来替换

  • 每个奇数 "{ 和每个偶数 "} 使用任何方言(注意句法歧义)
  • 每个奇数 `{ 和每个偶数 `} 使用 MySQL 方言
  • { 的每个 [} 的每个 ] 使用 SQL Server 方言

但据我所知,这不会是您要在生成的 SQL 中修补的唯一内容,因此您不妨 fork jOOQ 开源版并自己修补相关代码。

请注意,jOOQ 并不真正支持这种特定的方言。这不会是您遇到的唯一事情。例如,您可以尝试在 ExecuteListener 中对子查询进行模式匹配,并将它们包装在 {{ ... }} 中,但这也更容易实现通过直接给 jOOQ 打补丁。

关于java - 使用 jOOq 时如何将参数值用括号括起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53264890/

相关文章:

java - 使用 Mockito 对 Java Play 框架中的服务类进行单元测试

sql - DENSE_RANK() OVER(按 UniqueIdentifier 排序)问题

xml - 春&jOOQ : configuring postgreSQL driver throws an error

java - 带有模拟字段的 JOOQ 模拟结果

java - ArrayList : java. util.LinkedHashMap 的迭代器错误无法转换为 MyObject

java - 如何使用字符串值作为参数?

sql - ADODataSet 从连接表中删除

sql - select 语句列中的条件 null 不为 null - SQL Server

java - 确定一个值是否可用于 jOOQ 中的 Field/DataType

java - 如何复制一个对象,以便在更改复制的对象时,原始对象不会改变