Hibernate连接Oracle 21g失败求助:URL错误与方言疑问
解决Hibernate连接Oracle 21c的问题:URL错误、方言适配及驱动调整
1. 修复JDBC URL格式错误
报错ORA-17067: Invalid Oracle URL specified的核心原因是JDBC URL格式错误:
- 错误格式:
jdbc:oracle:thin://localhost:1521:xe - 正确格式(传统SID方式):
jdbc:oracle:thin:@localhost:1521:xe - 若使用Oracle 21c的可插拔数据库(PDB),推荐使用服务名格式:
jdbc:oracle:thin:@localhost:1521/xe
修正后的配置行:
<property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:xe</property>
2. 更新Oracle驱动类
你当前使用的oracle.jdbc.driver.OracleDriver是旧版驱动类,Oracle 12c+及21c推荐使用新版驱动类oracle.jdbc.OracleDriver,同时需匹配对应版本的JDBC驱动:
- Java 8环境选择
ojdbc8 - Java 11+环境选择
ojdbc11(完美适配Oracle 21c)
修正后的驱动类配置:
<property name="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</property>
对应Maven依赖示例(ojdbc11):
<dependency> <groupId>com.oracle.database.jdbc</groupId> <artifactId>ojdbc11</artifactId> <version>21.13.0.0</version> </dependency>
3. Oracle 21c的Hibernate方言适配
Oracle 21c无需额外的专属方言,直接使用现有方言即可:
- Hibernate 5.x版本:保留
org.hibernate.dialect.Oracle12cDialect,该方言完全兼容Oracle 12c至21c的所有版本 - Hibernate 6.x版本:推荐使用
org.hibernate.dialect.OracleDialect,6.x版本会自动检测Oracle数据库版本并完成适配
完整修正后的Hibernate配置文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</property> <property name="hibernate.connection.password">singwithme20</property> <property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:xe</property> <property name="hibernate.connection.username">system</property> <property name="hibernate.dialect">org.hibernate.dialect.Oracle12cDialect</property> </session-factory> </hibernate-configuration>
内容的提问来源于stack exchange,提问作者simplicity2024
相关产品推荐
相关产品推荐

