【问题标题】:Obtain an OracleDataSource in SpringBoot 2在 SpringBoot 2 中获取 OracleDataSource
【发布时间】:2020-07-21 22:25:54
【问题描述】:

是否可以使用 NamedParameterJdbcTemplate 对象从默认的 SpringBoot 2 Hikari 连接池中检索 OracleDataSource? 使用 Java 8、Oracle 11g (ojdbc6-11.2.0.1.jar) 和 gradle 这是我尝试过的。

@Repository
public class MyClass{

@Autowired
NamedParameterJdbcTemplate  jdbcTemplate;

public void myMethod(){
try{
    //OracleDataSource ods = new OracleDataSource();                                            // This works but is obviously not Spring
    OracleDataSource ods = (OracleDataSource) jdbcTemplate.getJdbcTemplate().getDataSource();   // This fails

    ods.setURL(url);
    ods.setUser(user);
    ods.setPassword(pass);

    ...
    catch(Exception e){
            System.out.println("In Exception");
            e.printStackTrace();
    }
}

}

Application.properties:

spring.datasource.url=jdbc:oracle:thin:@//${ORA_HOST}:${ORA_PORT}/${ORA_SID}
spring.datasource.username=${USER}
spring.datasource.password=${PASS}  

错误信息:

In Exception
java.lang.ClassCastException: com.zaxxer.hikari.HikariDataSource cannot be cast to oracle.jdbc.pool.OracleDataSource

【问题讨论】:

    标签: java spring-boot oracle11g


    【解决方案1】:

    我认为这是不可能的(或必要的)。最简单的方法是 unwrap() 一个已经连接到 dB 的连接对象:

    Connection conn =  this.jdbcTemplate.getJdbcTemplate().getDataSource().getConnection().unwrap(OracleConnection.class);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-28
      • 2020-12-20
      • 2018-12-08
      • 2011-08-23
      • 1970-01-01
      • 2011-08-05
      相关资源
      最近更新 更多