首页 > 解决方案 > 批量更新从更新 [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 的扩展。

我可能在某个地方遗漏了一些东西,但我不知道。

谢谢

标签: javaspringhibernate

解决方案


当您删除一个对象然后更新它(希望您没有更新主键)时,通常会发生此异常。我发现使用session.clear()after delete 通常会删除此异常。

此外,如果您在 hbm 映射文件中为 id 属性使用任何生成器类,则不要显式设置该值。

许多人有同样的错误,并在Hibernate 分享了经验或解决方案 - 批量更新从更新返回了意外的行数:0 实际行数:0 预期:1


推荐阅读