首页 文章

如何在oracle兼容模式和hibernate中使用hsqldb来获取序列的下一个值

提问于
浏览
1

我在oracle兼容模式下使用hsqldb作为为Oracle编写的应用程序的测试数据库 . 我也在使用hibernate .

在版本2.3.0(撰写本文时的最新版本)和2.2.9版本的hsqldb中

return name.equals(rangeTable.getSchemaName().name)

在每个hibernate创建sql时,org.hsqldb.RangeVariable.java文件的resolvesSchemaName(String name)函数抛出一个NullPointerException

select <SEQUENCE_NAME>.nextval from dual

因为rangeTable.getSchemaName()返回null .

我认为,因为http://hsqldb.org/doc/guide/management-chapt.html#mtc_compatibility_oracle说_448570_选择nextval就像hibernate所做的那样在oracle兼容模式下可以在hsqldb中运行 .

这是一个错误还是我做错了什么?

1 回答

  • 1

    我改变了hibernate会话工厂中的方言(hibernate.dialect)

    org.hibernate.dialect.Oracle10gDialect
    

    org.hibernate.dialect.HSQLDialect
    

    这改变了生成的SQL语法hibernate以获取序列的下一个值,然后就没有更多的NullPointerExceptions .

相关问题