【发布时间】:2017-07-28 09:44:14
【问题描述】:
我在删除 hibernate 读取的实体时遇到问题。像从数据库中加载实体并立即删除实体而不进行任何更改的简单调用失败并出现异常
org.springframework.orm.hibernate4.HibernateOptimisticLockingFailureException:批量更新从更新[0]返回了意外的行数;实际行数:0;预期:1;嵌套异常是 org.hibernate.StaleStateException:批量更新从更新 [0] 返回了意外的行数;实际行数:0;预计:1
我最终将错误追溯到一个错误字符串,该字符串具有以下 ascii 字符 - 239 (0xef)、191 (0xbf) 和 189 (0xbd)。删除这些字符后,一切正常。由于 hibernate delete 调用在删除时匹配 where 子句中的所有字段,因此当字符串中存在这些字符时调用失败。
我们的设置中的字符编码似乎存在问题,因为 hibernate 返回的实体/列不能用作条件中 where 子句的一部分 - 或者在翻译中丢失了某些内容。
我应该怎么做 - mysql setup 或 hibernate setup 这样以后可以避免这些问题
【问题讨论】: