1

我正在尝试使用 JPA 作为 ORM 和 MySQL 作为 RDBMS 合并具有 4 个属性(ID、FIRSTNAME、LASTNAME、SCORE)的对象,并且我只更新特定 ID 的分数并获得以下异常。

08:53:23,521 WARN  [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (Thread-35) SQL Error: 1366, SQLState: HY000
08:53:23,521 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (Thread-35) Incorrect string value: '\xEF\xBF\xBD' for column 'FIRSTNAME' at row 1
08:53:23,527 INFO  [org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl] (Thread-35) HHH00010:On release of batch it still contained JDBC statements
08:53:23,527 ERROR [stderr] (Thread-35) org.springframework.orm.hibernate3.HibernateJdbcException: JDBC exception on Hibernate data access: SQLException for SQL [n/a]; SQL state [HY000]; error code [1366]; Incorrect string value: '\xEF\xBF\xBD' for column 'FIRSTNAME' at row 1; nested exception is org.hibernate.exception.GenericJDBCException: Incorrect string value: '\xEF\xBF\xBD' for column 'FIRSTNAME' at row 1
08:53:23,528 ERROR [stderr] (Thread-35)         at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:645)
08:53:23,528 ERROR [stderr] (Thread-35)         at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:102)
08:53:23,528 ERROR [stderr] (Thread-35)         at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:471)
08:53:23,528 ERROR [stderr] (Thread-35)         at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754)

我怎样才能摆脱这个问题?谢谢!

编辑表排序规则是 utf8_general_ci

4

1 回答 1

3

0xEF 0xBF 0xBD是 U+FFFD 代码点的 UTF-8 编码形式。当 UTF-8 解析器无法将字节序列解析为有效的 UTF-8 序列时,就会发生这种情况。

从您的错误来看,似乎为 Hibernate 提供了这个无效序列。因此,您需要确定堆栈中的数据处理元素是否正在使用不正确的编码解析数据。

于 2012-11-21T09:57:15.237 回答