我在 oracle 兼容模式下使用 hsqldb 作为为 Oracle 编写的应用程序的测试数据库。我也在使用休眠。
在 hsqldb 的 2.3.0 版(撰写本文时的最新版本)和 2.2.9 版中,该行
return name.equals(rangeTable.getSchemaName().name)
在 org.hsqldb.RangeVariable.java 文件的 resolvesSchemaName(String name) 函数中,每当 hibernate 创建 sql 时都会抛出 NullPointerException
select <SEQUENCE_NAME>.nextval from dual
因为 rangeTable.getSchemaName() 返回 null。
我认为由于http://hsqldb.org/doc/guide/management-chapt.html#mtc_compatibility_oracle说“ORA 语法模式支持 DUAL 表和表达式、ROWNUM、CURRVAL、NEXTVAL”选择像休眠一样的 nextval 是在 oracle 兼容模式下在 hsqldb 中执行操作。
这是一个错误还是我做错了什么?