NutzCN Logo
问答 用oracle数据库,因为有特殊的字段类型,所以自己获取connection来插入数据,结果就报这个错
发布于 2408天前 作者 DarkObject 2124 次浏览 复制 上一个帖子 下一个帖子
标签:
java.lang.ClassCastException: com.alibaba.druid.pool.DruidPooledConnection cannot be cast to oracle.jdbc.OracleConnection
@Inject
	private DruidDataSource datasource;
Connection conn = datasource.getConnection();
			String shpSqlStr = "insert into map_table values(?,?,?,?,?,?,?)";
			PreparedStatement shpStmt = conn.prepareStatement(shpSqlStr);
			
			Struct struct = shape.getStruct(conn, 1);
			
			shpStmt.setString(1,"1");
			shpStmt.setObject(2,struct);
			shpStmt.setInt(3,1);
			shpStmt.setString(4,"1");
			shpStmt.setString(5, "1");
			shpStmt.setBigDecimal(6, null);
			shpStmt.setBoolean(7, false);
			shpStmt.execute();
8 回复

取出来是DruidPooledConnection,这个类有获取原生连接的方法,你翻一下它的源码吧

嗯嗯,好的,谢谢!
还有就是,框架拼接oracle中SDO_GEOMETRY类型的sql时拼接不成功,我可以自己写sql,让框架来执行吗

额,你打算怎么写?给一下你想写的sql看看

因为geometry这个对象,只能把它转化为STRUCT 所以sql只能是通过预编译,然后set每个值,问题已经解决了,谢谢!

其实你可以做个ValueAdapter的

自己写了一个适配器,实现了ValueAdapter接口,但是没有在入口函数上用注解,但是当insert时这个适配器会被触发,是不是只要我自定义了很多适配器的话,在执行数据库操作时,这些适配器都会被执行一次?

额,没懂。。。

额,是我自己搞错了,自定义的ValueAdapter是在pojo类中用注解标注在那个属性上的,我还以为ValueAdapter这个和struts2那个拦截器类似,是一个一个去加载匹配...........

添加回复
请先登陆
回到顶部