java - 批量更新从更新 [0] 返回了意外的行数;实际行数:0;预期:1;嵌套异常是 org.hibernate.StaleStateException
问题描述
我在删除 SpringBoot 项目中的实体时遇到问题:
在我的服务中,我正在调用以下函数以删除实体:
ecSignatoryService.deleteById(ecSignatoryDTO.getId());
. 我之前已经验证过,该实体存在于我的数据库中。
EcSignatoryServiceImpl:
@Override
@Transactional
public void deleteById(Long signatoryId) {
this.ecSignatoryDao.deleteById(signatoryId);
}
EcSignatoryDaoImpl:
@Override
@Transactional
public void deleteById(Long signatoryId) {
this.ecSignatoryRepository.deleteById(signatoryId);
}
我的存储库只是 CrudRepository 的扩展。
我可能在某个地方遗漏了一些东西,但我不知道。
谢谢
解决方案
当您删除一个对象然后更新它(希望您没有更新主键)时,通常会发生此异常。我发现使用session.clear()
after delete 通常会删除此异常。
此外,如果您在 hbm 映射文件中为 id 属性使用任何生成器类,则不要显式设置该值。
许多人有同样的错误,并在Hibernate 分享了经验或解决方案 - 批量更新从更新返回了意外的行数:0 实际行数:0 预期:1