hibernate 操作 Postgresql 數據庫報 operator does not exist: integer = character varying


網上的說法如下:

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 條件)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM