访问H2数据库架构

时间:2012-08-22 03:44:54

标签: java schema h2 information-schema jooq

我正在使用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相关的代码有效。所以我想访问数据库的元数据(模式)并返回一些东西,而不必知道是否存在任何用户创建的表。

1 个答案:

答案 0 :(得分:2)

您可以像任何其他架构一样为INFORMATION_SCHEMA生成类。实际上,jOOQ-meta包含了对数据库模式进行逆向工程所需的一些类。

manual's section about advanced code generation properties提及如何配置代码生成器以加载多个“输入模式”:

<database>
  <schemata>
    <schema>
      <inputSchema>...</inputSchema>
    </schema>
    [ <schema>...</schema> ... ]
  </schemata>
</database>