有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何获取OracleConnection以将JGeometry存储到Oracle数据库

我正在尝试使用以下代码将JGeometry存储到Oracle数据库:

@PersistenceContext
private EntityManager entityManager;

    Session session = entityManager.unwrap(Session.class);
    session.doWork(new Work() {

        @Override
        public void execute(Connection connection) throws SQLException {

            PreparedStatement ps = connection.prepareStatement("UPDATE SAMPLE_AREA SET GEOMETRY=? WHERE ID = " + sampleAreaId + " AND SAMPLE_ID = " + sampleId);
            System.out.println(connection); // prints: org.hibernate.engine.jdbc.internal.proxy.ConnectionProxyHandler@321ca777[valid=true]
            System.out.println(connection.getClass().getName()); // prints: com.sun.proxy.$Proxy125 
            STRUCT obj = JGeometry.store(jGeometry, connection);
            ps.setObject(1, obj);
            ps.execute();

        }
    });

我正在学习java。lang.ClassCastException:com。太阳代理$Proxy125无法强制转换为oracle。jdbc。调用JGeometry时使用OracleConnection。商店

如何获取OracleConnection

我使用的是“hibernate.dialogue=org.hibernate.dialogue.oracle10gdialogue”


共 (1) 个答案

  1. # 1 楼答案

    我想出了解决办法。而不是使用连接作为JGeometry的参数。存储用户需要使用OracleConnection。可以从连接中展开的。我想我以前试过这个,但很可能我的导入错误,正确的是oracle。jdbc。OracleConnection

    import oracle.jdbc.OracleConnection;
    ...
    OracleConnection oracleConnection = connection.unwrap( OracleConnection.class );
    STRUCT obj = JGeometry.store(jGeometry, oracleConnection);