springboot jpa save中文和特殊字符入库时的乱码报错问题记录

在springboot 的dao实例继承JpaRepository 进行入库save操作时,出现了“sql error 1064 sqlstate 42000”,直接是语法错误;理由就是我插入的数据里面包含了中文,越南语,泰语这些多国语言,在入库时插入别识别为乱码了,导致插入失败!

蹦到这个问题时各种翻查:

springboot的数据库连接配置,mysql本身的字符集,库的字符集,表的字符集,字段的字符集,通通查完了,都是utf-8;甚至都使用上string.getbytes("utf-8")了,依然无解!

sql直接在数据库执行时,所有的字段名,填写各种语言的值都能入库,不会报错;但是就是用jpa调用时不行;

翻看jpa的sql,对比发现唯一不一样的地方就是jpa在执行sql时拼接的字段名是没有带上``符号的;

这唯一的区别解决方案极其简单: 直接在你的entity定义中将所有字段的Column注释都加上,并且对于的字段名都带上``符号,例如:

@Column(name = "`key`")
private String key;

改好后再次重试,问题被解决!

没想到jpa在识别entity的属性时只是拿到每一个属性和数据的字段做做比对,一致的就用,不一致就看column赋值,没有就报错;而且在用的时候根本就不管这种字段符号的事,天坑一个!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值