java.sql.SQLException: Invalid utf8 character string: 'ACED00'

本文介绍了一次使用JPA+Hibernate执行原生SQL查询时遇到的异常问题,异常信息中包含“Invalid utf8 character string:'ACED00'”。经过排查发现,问题是由于在SQL查询中使用了statusin(?1)并传入枚举元素作为参数导致的。文章分享了解决方案,即将枚举元素改为调用其name()方法获取字符串表示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用JPA+Hibernate执行原生sql查询时报了异常,一开始以为是数据库编码的问题,尝试了几种方式都没有解决,静下来想了想,原来是查询的sql中有status in (?1),而传入的参数值是枚举元素,导致无法解析,把传入的参数值改成枚举元素的name()就解决了。根本原因和异常中的ACED00还么有搞清楚是什么。

Caused by: java.sql.SQLException: Invalid utf8 character string: 'ACED00'

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4237)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4169)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2617)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2778)

at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2825)

at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2156)

at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2323)

at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)

at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)

at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:82)

... 58 more

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值