1、首先3和4的UserType接口定义不一样,3的需要修改才能适合4的;
2、在3中,nullSafeGet->ResultSet是个实际对象,譬如oracle jdbc为OracleResultSet;
3、在4中,nullSafeGet->ResultSet是个代理对象, 执行oracle的一些特性会比较麻烦,譬如OPAQUE op = OracleResultSet.getOPAQUE(names[0]); 这是由于你无法从ResultSet转换成OracleResultSet;我的解决方法是执行修改了4的代码
4、同样的,在3中nullSafeSet->PreparedStatement是个实际对象,而在4中,也是个代理,可用以下方式获取connection:
DatabaseMetaData dbMetaData = st.getConnection().getMetaData();
Connection conn = dbMetaData.getConnection();