網上的說法如下:
Java開發Postgresql 數據庫兼容應用的問題,與Oracle有一些不同:
Java類型映射數據庫類型的不同,Oracle jdbc驅動程序處理Java String類型可正常映射到數據庫的Numberic(Integer),而Postgres則會出錯。
另外,則是使用hibernate時經常的錯誤: operator不存在:character varying = bytea問題,不要被這個描述誤導了,並不是sql語句中character varying = bytea類型的比較,而是當使用hibernate使用參數綁定,而參數的值為null時,hibernate或者Postgresql驅動將這個參數映射為varbinary類型,Postgresql將varbinary認為為bytea類型。
我的錯誤原因:
數據表的 id Variable characters (50) 為自增的數值型VChar ,Postgresql 在 hibernate 操作下好像是默認轉成了其他類型導致沒匹配上。
Oracle數據庫允許 WHERE ID = ? 然后值傳成 String (本來就應該是)
Postgresql 數據庫中只能寫成:
WHERE id = '"+MapUtils.getString(paramMap, "id")+"'");
另外刪除數據時 Postgresql 中需要加 from
delete from 表 where 條件 (Oracle 中 只需要 delete 表 where 條件)