我目前正在使用jooq,对于我的单元测试,我使用内存H2 DB,我使用jooq生成的元数据创建表,如 https://www.jooq.org/doc/3.9/manual/sql-building/ddl-statements/generating-ddl/
使用3.8.4它工作正常但升级到3.9.0(或3.9.1)时出现错误:
Queries queries = dslContext.ddl(DefaultSchema.DEFAULT_SCHEMA);
for (Query query : queries.queries()) {
query.execute();
}
错误:
java.lang.ArrayIndexOutOfBoundsException:-1
at org.jooq.impl.SchemaImpl.<init>(SchemaImpl.java:78)
at org.jooq.impl.DSL.schema(DSL.java:7199)
at org.jooq.impl.DefaultDSLContext.createSchema(DefaultDSLContext.java:2605)
at org.jooq.impl.DefaultDSLContext.createSchema(DefaultDSLContext.java:2600)
at org.jooq.impl.DDL.queries(DDL.java:112)
at org.jooq.impl.DefaultDSLContext.ddl(DefaultDSLContext.java:2487)
at org.jooq.impl.DefaultDSLContext.ddl(DefaultDSLContext.java:2482)
答案 0 :(得分:1)
感谢报道。这是jOOQ 3.9.0和3.9.1中的错误。我为此创建了https://github.com/jOOQ/jOOQ/issues/5979。
解决方法是在此处排除架构生成:
Queries queries = dslContext.ddl(DefaultSchema.DEFAULT_SCHEMA, DDLFlag.TABLE, ...);