commons-beanutils RowSetDynaClass 的問題
19:02
我想, 大概世界上敢定自己規格的資料庫廠商大概就是 Microsoft 和 Oracle 了吧.
改寫一套舊的系統, 要將檔案存放在資料庫之中,
MS-SQL Server 2000 是設定為 image 的 Datatype,
在 Metadata 取得的型態是 byte,
但是將 ResultSet 放到 RowSetDynaClass 的時候就會報錯,
因為他用了 ClassLoader 取 loadClass("byte"),
自然找不到 byte 這樣的 class.
另外, 在 Oracle10g 也有類似的問題, Date Datatype 由 Metadata 取得是 java.sql.Timestamp, ResultSet 取得的 class 卻是 java.sql.Date ?
這篇 jira 就是討論 oracle 的解決方案
https://issues.apache.org/jira/browse/BEANUTILS-142BTW, 似乎很少使用 MSSQL 2000 的案例,
我剛好遇到, 我則是在 createDynaProperty 確認是回傳 byte 直接設定為 byte 的 DynaProperty.
if (className != null) {
if( className.indexOf("byte[]") >=0 ) {
return new DynaProperty(name, byte[].class);
} else {
clazz = loadClass(className);
}
}
總之, 自己要連結資料庫的狀況真的需要考慮更多 …