我已经用 Jooq 从本地 HSQLDB (DBMS) 生成了 API。并且测试运行正常。但是当我尝试使用另一个 DBMS(如 MySQL)运行测试时出现异常。另外,我已经看到 MySQL 生成的 API 属性是区分大小写的,而 HSQLDB 不是。
我的问题:是否可以使用 HSQLDB 使用 Jooq local 进行开发并使用 Oracle 或 MySQL 运行实时系统?
可以将 jOOQ 与多个数据库一起使用。我所知道的jOOQ 用户组中最“大胆”的用户将 jOOQ 与至少五个不同的(高效的!)数据库系统(其中:Oracle、SQL Server、Sybase)一起使用。
但请注意,jOOQ 只会在一定程度上抽象您的数据库。一旦您使用供应商特定的功能,您可能会遇到问题。jOOQ 不保证所有呈现的 SQL 都适用于您的所有数据库。它只会简化标准化任务。
由于您尝试将 HSQLDB 和 Oracle 结合起来,因此有问题的功能包括(以及许多其他功能):
DATE
Oracle对数据类型的不同实现VARCHAR
/VARCHAR2
数据类型FOR UPDATE
语法MERGE
语法INTEGER
数据类型(尤其是存储过程)''
和NULL
都一样)PIVOT
/UNPIVOT
子句当然,当 jOOQ 不明确支持某个功能时,不兼容也仍然存在。其中包括(除其他外):
MODEL
条款还有,你自己负责
CREATE TABLE "MY_TABLE"...
(Oracle、HSQLDB)或CREATE TABLE `MY_TABLE`...
(MySQL)另一方面,您可以安全地使用 jOOQ 和 jOOQ 的 SQL 抽象功能
有关更多信息,请考虑org.jooq.Support
Javadoc。此注解用于所有 API 元素,以记录 jOOQ 是否能够模拟相关方言中的底层 SQL 子句/函数。
除此之外,如果您唯一的问题是表名区分大小写,请考虑通过 jOOQ 的设置告诉 jOOQ 不要引用名称:http: //www.jooq.org/doc/3.0/manual/sql-building/executor/自定义设置/
一个例子:
// This DSLContext will not render quoted table / column names:
Settings settings = new Settings().withRenderNameStyle(RenderNameStyle.AS_IS);
DSLContext create = DSL.using(connection, dialect, settings);