当前位置: 首页 > 知识库问答 >
问题:

在Hibernate中删除实体后无法保存

马德厚
2023-03-14

我想删除所有具有某些lineId的记录,以保存另一个具有相同lineId的记录(作为刷新),但删除后我无法保存任何内容。没有任何错误,但数据库中没有我的记录。

当我没有删除代码时,一切都会正确保存。

public void deleteAndSaveEntities(List<Entity> entities, Long lineId){
    deleteEntities(lineId);
    saveEntities(entities);
}

private void deleteEntities(Long lineId) {
    List<Entity> entitiesToDelete = entityRepository.findAllByLineId(lineId);
    entityRepository.deleteAll(entitiesToDelete); 
}

private void saveEntities(List<Entity> entities) {
    entityRepository.saveAll(entities);
}

共有2个答案

司徒斌
2023-03-14

正如thomas提到的,hibernate出于性能原因对事务中的查询重新排序,并在更新后执行删除。

我将提交这两个操作之间的事务。在deleteEntities和saveEntities上添加@Transactional。但请注意,在同一对象中调用时,@Transactional不起作用。您必须将服务注入自身,然后调用自引用上的方法

钱卓君
2023-03-14

实际上,您希望更新具有lineId的条目。尝试一下:

  1. 先到先得。。().
 类似资料:
  • 我正在尝试删除一个父/子自连接实体,但无法这样做,这里是我的映射

  • 问题内容: 我有两个分别以双向一对多关系存在的实体类 A 和 B。 A.java: B.java 在一个简单的控制台应用程序中,我从数据库中获取了特定的 A 行,并尝试删除其详细信息 B 行(随机),但是 JPA / Hibernate* 不仅删除了该行-甚至没有向该行发出任何 DELETE 语句。数据库。删除 B 行的唯一方法是从 A.java 的集合( LinkedHashSet )中删除相应

  • 有这两个类: ddress.java: User.java: 演示应用程序。爪哇: 运行时,如果失败,出现此错误: GenerationTarget遇到异常接受命令:通过JDBC语句执行DDL“更改表user_addresses删除外键FKfm6x520mag23hvgr1oshaut8b”时出错 然而,最终的表格被创建:: : 为什么jdbc不能删除表中的外键?如何让jdbc做到这一点?

  • 我有一个OneTo多项关系,我可以插入记录,但不能删除它们,当我试图删除它时,它会遇到“外键约束失败”错误。我使用级联删除孤儿如下,但不工作还。 父类的成员具有以下getter 成员类的父类具有以下getter 我也使用了下面的注释,但不起作用 我的冬眠依赖如下 我删除信息的代码

  • EventLicensetype.hbm.xml文件: 下面是EventInfo类。同样,在实际文件中有更多的字段,这只是重要的部分: 下面是EventLicenseType类 为什么它不能直接删除记录?为什么它要更新??我还尝试将代码更改为下面的代码,并得到相同的错误。 谁能帮我解决我缺少的东西,或者给我指明正确的方向?

  • 在使用Hibernate删除与子实体具有关系的JPA实体时,我遇到了一个问题,但是在使用EclipseLink而不是Hibernate作为JPA提供程序时,相同的代码可以正常工作。父实体上的批注是 当使用Hibernate时,它尝试将子实体上的join列设置为null,但由于该列不允许null而失败。使用EclipseLink时,它首先删除子实体,然后删除父实体,这是所需的行为。 我的问题是: 为