一、現象
在Java中,使用mybatis-plus更新實體類物件到mysql,其中一個欄位對應資料庫中json資料型別,更新時報錯:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
報錯資訊:
Cause: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
; Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.; nested exception is com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
二、排查
實體類,已配置欄位轉換器及對映關係。
上述使用lambdaUpdate()方法,直接set,list集合未被轉換json欄位,導致儲存mysql失敗
三、解決
方式1
使用updateById方法,以物件更新
方式2
手動轉換json,儲存成功