我有 DAO 代码,其中包含一些具有 Oracle 特定语法的 JDBC,例如:
select count(*) cnt from DUAL
where exists (select null from " + TABLE_NAME + "
where LOCATION = '" + location + "')")
我正在使用内存 HSQLDB 数据库对此 DAO 方法运行 JUnit 测试。显然 DUAL 表是 Oracle 特定的,当我运行测试时会导致错误:
org.springframework.jdbc.BadSqlGrammarException: StatementCallback;
bad SQL grammar [select count(*) cnt from DUAL where exists
(select null from ESRL_OBSERVATIONS where LOCATION = '/path1')];
nested exception is java.sql.SQLException: user lacks privilege or object
not found: DUAL
谁能建议我能做些什么来解决这个问题?我正在使用 Hibernate 创建模式——也许我可以在 Hibernate 属性中进行一项设置,以启用对 Oracle 样式语法的支持?
如果将 Hibernate 3.6 与 HSQLDB 2.0.1 或更高版本一起使用,则可以使用连接属性sql.syntax_ora=true
在您的连接 URL 上。这使得 DUAL 表能够与其他一些 Oracle 特定语法一起使用。
您可能需要更多连接属性来实现主属性未涵盖的行为。看:http://hsqldb.org/doc/2.0/guide/management-chapt.html#mtc_compatibility_oracle
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)