天天看點

Greenplum資料庫報錯[Pivotal][Greenplum JDBC Driver]Value can not be converted to requested type問題解決【踩坑分享】

問題

測試接口時,儲存資料報錯 [Pivotal][Greenplum JDBC Driver]Value can not be converted to requested type. 參數類型是Map,下邊是簡化後的mapper裡的SQL,是不是看起來平平無奇,😁那你就錯了:

<insert id="insertEquip" parameterType="java.util.Map">
	insert into equip621 (id, name, age, equip) values (#{id}, #{name}, #{age}, #{equip})
</insert>
           

我嘗試了以下操作都沒能解決問題:

  1. 懷疑是Map的value類型Object導緻的,就封裝了實體類,報錯;
  2. 将所有字段的字段類型都改成varchar,又報錯;
  3. 将字段名稱疑似是Greenplum或PostgreSQL資料庫關鍵字的去掉,依然報錯;
  4. 懷疑xml裡混入了特殊編碼的空格資訊,重新編寫mapper檔案,又又又報錯。

解決

說實話,我摸不到頭腦了,現在唯一沒改的就是表名稱了,我把表名稱改了一下:

<insert id="insertEquip" parameterType="java.util.Map">
	insert into equip_table (id, name, age, equip) values (#{id}, #{name}, #{age}, #{equip})
</insert>
           

成功了!!!😭😭😭 我又測試了一下這樣的表名稱:

<insert id="insertEquip" parameterType="java.util.Map">
	insert into equip_621 (id, name, age, equip) values (#{id}, #{name}, #{age}, #{equip})
</insert>
           

還是可以的。

總結

這個表名稱equip621是Oracle資料庫的表,mapper檔案也使用的是之前的,看來是Greenplum資料庫的規範問題。