在 oracle 模式下升级 h2 数据库 jar 后选择语句失败
Posted
技术标签:
【中文标题】在 oracle 模式下升级 h2 数据库 jar 后选择语句失败【英文标题】:Select statement failing after h2 database jar upgrade in oracle mode 【发布时间】:2015-09-16 14:38:28 【问题描述】:将 H2 数据库版本从 1.3.171 升级到 1.4.187 后,我的 select 语句失败并出现 jdbc 错误代码 [90022-187]。我正在使用 Spring 4 和 Hibernate 4.3.5。
错误跟踪:
未找到函数“BUS_ENTY_GUID”; SQL 语句: SELECT * FROM(选择consumerin0_.CNSMR_INTNT_SID如CNSMR_IN1_0_0_,busentity1_.BUS_ENTY_SID如BUS_ENTY1_4_1_,intentuser2_.USR_SID如USR_SID1_10_2_其中consumerin0_.OWNR_ENTY_NM = busentity1_.BUS_ENTY_GUID(+)和consumerin0_.USR_EXTRNL_ID = intentuser2_.MAG_GUID(+)和较低的(consumerin0_.ORD_ID )=lower(?) 和 lower(intentuser2_.USR_LAST_NM)=lower(?) ) where rownum
请帮助解决问题
【问题讨论】:
【参考方案1】:H2 不再支持“旧式”Oracle 外连接语法。您将不得不使用“外部联接”。
【讨论】:
【参考方案2】:感谢托马斯的帮助!
我使用的是 org.hibernate.dialect.OracleDialect,因此查询的转换具有旧式连接。现在我已将其更改为 Oracle10gDialect,它工作正常。
【讨论】:
【参考方案3】:使用-Dh2.oldStyleOuterJoin=true
支持旧语法。
访问http://www.h2database.com/javadoc/org/h2/engine/SysProperties.html
【讨论】:
以上是关于在 oracle 模式下升级 h2 数据库 jar 后选择语句失败的主要内容,如果未能解决你的问题,请参考以下文章