gpt4 book ai didi

oracle - JUnit/HSQLDB : How to get around errors with Oracle syntax when testing using HSQLDB (no privilege and/or no DUAL object)

转载 作者:行者123 更新时间:2023-12-02 08:26:38 32 4
gpt4 key购买 nike

我有 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 或更高版本结合使用,则可以在连接 URL 上使用连接属性 sql.syntax_ora=true。这使得 DUAL 表能够与其他一些 Oracle 特定语法一起使用。

您可能需要更多连接属性来实现主属性未涵盖的行为。看: http://hsqldb.org/doc/2.0/guide/management-chapt.html#mtc_compatibility_oracle

关于oracle - JUnit/HSQLDB : How to get around errors with Oracle syntax when testing using HSQLDB (no privilege and/or no DUAL object),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4628857/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com