jOOQ 常见问题
查询
问
jOOQ 不支持特定于供应商的函数。我还能使用这个函数吗?
答
可以,无论何时 jOOQ 中未开箱即用地支持某些内容,你都可以使用纯 SQL 模板使其工作。
问
如何在 SQL 查询中创建一个常量值?
答
常量只是普通的 Field
表达式。使用绑定值或内联值。
问
如何将 Field<Boolean>
转换为 Condition
?
答
一个可以被另一个包装,请参阅布尔列。
问
为什么我会遇到连接泄漏?
答
如果你将 JDBC Connection
传递给 jOOQ,jOOQ 永远不会为你关闭它。相反,尝试将 DataSource
传递给 jOOQ,并且jOOQ 将为你管理连接生命周期。
问
如何更改 jOOQ 生成的 SQL 中表和列的限定(例如,用于多租户)?
答
默认情况下,jOOQ 完全限定表、列和其他对象的所有标识符。但是,使用运行时模式映射功能,你可以在运行时以配置方式更改这些限定。
代码生成
问
我不想连接到实时数据库进行代码生成。我可以这样做吗?
答
是的,我们目前支持从XML、JPA 实体和SQL 脚本生成代码,而无需实时连接。
问
我必须使用代码生成器吗?
答
虽然我们建议使用它,但你不必这样做。你可以仅从标识符创建查询。
问
将生成的代码放在哪里?
答
这个问题没有正确的答案,但有一些观点。
问
为什么没有生成任何类?
A1
<inputSchema/>
和许多其他配置元素区分大小写。请检查你是否使用了正确的大小写。
A2
你的数据库用户需要适当的权限才能查询字典视图/信息模式。
问
我得到了 NoClassDefFoundError
或 ClassNotFoundException
答
一个很可能的原因是你在代码生成器和运行时使用了不同的 jOOQ 版本。如果你使用第三方依赖管理(例如Spring Boot)或第三方 jOOQ gradle 插件,则可能会发生这种情况。确保你为所有内容使用相同的 jOOQ 版本(和版本!)。