org.jooq.Meta を使用した jOOQ 3.0 ソリューション
今後の jOOQ 3.0 では、JDBCは新しいオブジェクト (機能要求#1968DatabaseMetaData
で実装) を介して「jOOQ 方式」でアクセスできます。このオブジェクトは、次のタイプのさまざまなオブジェクトへのアクセスを提供します。org.jooq.Meta
org.jooq.Catalog
org.jooq.Schema
org.jooq.Table
org.jooq.Field
org.jooq.DataType
これらは、生成されたクラスと比較できます。
MY_SCHEMA.getTables().equals(create.meta().getTables())
JDBC DatabaseMetaData を使用した jOOQ 2.x ソリューション
上記のソリューションは手動で実装でき、Connection.getMetaData()
. もちろん、もう少し手間がかかります
すべてのテーブルをクエリするトリック
別の簡単な解決策は、生成されたすべてのテーブルを次のようにクエリすることです。
List<Table<?>> invalidTables = new ArrayList<>();
for (Table<?> table : MY_SCHEMA.getTables()) {
try {
create.selectFrom(table).where(Factory.falseCondition()).fetch();
}
// If table names / column names change, the above query would fail
catch (DataAccessException e) {
invalidTables.add(table);
}
}
このトリックにより、増分が互換性があるかどうかを検出できます