我正在使用jOOQ访问java中的嵌入式H2数据库以生成表类等。我当前可以执行查询,例如
create.select().from(TEST).fetch()
在我的代码中,返回结果等。
但是我无法查询信息架构。我可以使用H2控制台访问它,并为给定的information_schema表创建一个视图工作正常。我的问题是我应该如何访问information_schema,例如执行诸如
之类的查询SELECT * FROM INFORMATION_SCHEMA.TABLES
从我的java代码中?我是否必须创建视图,可以通过jooq-meta或其他方式访问模式,还是需要向jooq-codegen使用的属性文件添加内容(information_schema不是在生成的表类中创建的) ?或其他什么?
编辑: 这是我第一次尝试使用jooq而来自MySQL背景。我有效地尝试实现的是能够运行一些单元测试以确保与DB相关的代码有效。所以我想访问数据库的元数据(模式)并返回一些东西,而不必知道是否存在任何用户创建的表。
答案 0 :(得分:2)
您可以像任何其他架构一样为INFORMATION_SCHEMA
生成类。实际上,jOOQ-meta包含了对数据库模式进行逆向工程所需的一些类。
manual's section about advanced code generation properties提及如何配置代码生成器以加载多个“输入模式”:
<database>
<schemata>
<schema>
<inputSchema>...</inputSchema>
</schema>
[ <schema>...</schema> ... ]
</schemata>
</database>