旧式外连接 (+) 不能与 ANSI 连接一起使用,Oracle 数据库错误代码 ORA-25156
Posted
技术标签:
【中文标题】旧式外连接 (+) 不能与 ANSI 连接一起使用,Oracle 数据库错误代码 ORA-25156【英文标题】:Old style outer join (+) cannot be used with ANSI joins, Oracle Database Error Code ORA-25156 【发布时间】:2020-12-13 17:27:15 【问题描述】:为什么即使我将 hibernate.dialect 指定为 OracleDialect,我也会收到此错误。如果您推荐使用 oracle10gDialect 或 Oracle9iDialect 请解释一下,因为 Hibernate 在第一次连接到数据库时可以使用 JDBC 元数据找到方言。如果我错了,请纠正我。
【问题讨论】:
我认为没有任何 Oracle 方言允许 ANSI 连接语法和 Oracle 专有外部连接(+)
语法在同一个查询中。这与 Hibernate 和您问题中的其他内容完全不同,我对此一无所知。
【参考方案1】:
我相信你的问题是找到正确的方言。但我相信这是配置的一部分。这不是编程问题,这是您用来操作或使用配置的配置策略。
-
您可以使用基于环境的 dev、UAT、PROD 等多个配置文件将配置外部化。然后你的CICD
管道将根据部署的环境选择具有正确方言的正确配置文件。
或者您可以添加默认方言并覆盖基于的属性
部署应用的环境。
原因是应用程序是查找数据库的组件。
如果您想以编程方式执行此操作,请查看此帖子(我没有尝试过): Is there a way to detect SQL Dialect without knowing the database type?
另外请阅读驱动程序规范和 JPA 方言用法。一些数据库期望方言的确切版本能够支持全部功能。
【讨论】:
以上是关于旧式外连接 (+) 不能与 ANSI 连接一起使用,Oracle 数据库错误代码 ORA-25156的主要内容,如果未能解决你的问题,请参考以下文章
ADO 无法识别旧式 SQL 连接。不知道如何在此特定查询中使用新式语法