Druid連線池的坑
阿新 • • 發佈:2018-12-24
Druid的坑
當查詢資料庫的Clob轉換為Oracle Clob型別的時候。
java.lang.ClassCastException: com.alibaba.druid.proxy.jdbc.ClobProxyImpl cannot be cast to oracle.sql.CLOB
問題原因
ClobProxyImpl不能轉換為Oracle的Clob欄位,這也是醉了。
原因是Druid為Clob欄位增加了代理類:com.alibaba.druid.proxy.jdbc.ClobProxyImpl,然後程式碼裡面強制轉換成Oracle的Clob就出現了這個問題。
解決方案
現在的解決方案是先轉換為Druid的代理類ClobProxy物件,然後獲取原生的Oracle Clob欄位內容即可。
public class ClobUtil { public static CLOB parseOracleClob(Clob clob) { SerializableClob sclob = (SerializableClob) clob; Clob wrappedClob = sclob.getWrappedClob(); // 解決Druid的坑 if (wrappedClob instanceof ClobProxy) { ClobProxy clobProxy = (ClobProxy) wrappedClob; wrappedClob = clobProxy.getRawClob(); } return (CLOB) wrappedClob; } }