java连接不上oracle,java – 连接不能转换到oracle.jdbc.OracleConnection

为什么

java.sql.Connection不能在下面的代码中转换为oracle.jdbc.OracleConnection?

我的主要目标是传递到Oracle连接新用户名,并将其保存在例如’osuser’列中的’SESSION’表中,因为我想跟踪数据库用户更改并将其显示在表中.

@Repository

public class AuditLogDAOImpl implements AuditLogDAO {

@PersistenceContext(unitName="myUnitName")

EntityManager em;

@Resource(name = "dataSource")

DataSource dataSource;

public void init() {

try {

Connection connection = DataSourceUtils.getConnection(dataSource);

OracleConnection oracleConnection = (OracleConnection) connection; //Here I got cast exception!

String metrics[] = new String[OracleConnection.END_TO_END_STATE_INDEX_MAX];

metrics[OracleConnection.END_TO_END_CLIENTID_INDEX] = "my_new_username";

oracleConnection.setEndToEndMetrics(metrics, (short) 0);

java.util.Properties props = new java.util.Properties();

props.put("osuser", "newValue");

oracleConnection.setClientInfo(props);

} catch (SQLException e) {

e.printStackTrace();

}

}

}

这是错误日志:

10:42:29,251 INFO [STDOUT] org.jboss.resource.adapter.jdbc.jdk6.WrappedConnectionJDK6@bcc8cb

10:42:51,701 ERROR [STDERR] java.lang.ClassCastException: $Proxy286 cannot be cast to oracle.jdbc.OracleConnection

在这种情况下一般我有2个问题:

>为什么从Connection连接到OracleConnection的失败和

>什么是最好的方式来实现我的意图(我的意思是设置新的用户名为v $session.osuser在Oracle数据库?

我使用Oracle 11g,Hibernate(使用实体管理器),通过jndi的数据源.

请帮忙,谢谢!

编辑:

经过一些改进,铸造问题依然存在.

改进:

Connection connection = DataSourceUtils.getConnection(dataSource);

connection = ((org.jboss.resource.adapter.jdbc.WrappedConnection)connection).getUnderlyingConnection();

OracleConnection oracleConnection = (OracleConnection) connection;

错误:

java.lang.ClassCastException: $Proxy287 cannot be cast to org.jboss.resource.adapter.jdbc.WrappedConnection

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值