- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个通过双向 OneToMany/ManyToOne 关系连接的实体。
@Entity
class One {
@OneToMany(mappedBy = "one", orphanRemoval = true, fetch = FetchType.EAGER)
private Set<Many> manies;
// ...
}
@Entity
class Many {
@ManyToOne
@JoinColumn(name = "one_id", nullable = false)
private One one;
// ...
}
当我想要删除 Many
实例时,我将其从其 One
的 manies
Set
中删除并将其从数据库中删除。如果我采用相同的 One
实例并再次保存它(因为我更改了任何内容,它不一定与关系相关),我会得到一个异常:
javax.persistence.EntityNotFoundException: Unable to find test.Many with id 12345
ID(在此示例中为 12345)是刚刚删除的实体的 ID。请注意,实体 12345 的删除已成功:事务提交成功,并且该行已从数据库中删除。
添加和删除实例是通过 Spring Data 存储库完成的。删除看起来或多或少像这样:
one.getManies().remove(manyToRemove);
oneDao.save(one);
manyDao.delete(manyToRemove);
我调试了一下,发现Set
是一个Hibernate PersistentSet
,其中包含一个字段storedSnapshot
。这又是另一个仍引用已删除实体的Set
。我不知道为什么这个引用没有从快照中删除,但我怀疑这就是问题所在:我认为 Hibernate 尝试再次删除该实体,因为它位于快照中,但不在实际集合中。我搜索了很长一段时间,但没有遇到其他人有类似的问题。
我使用 Hibernate 4.2.2 和 Spring Data 1.6.0。
我做的事情本质上是错误的吗?我该如何解决这个问题?
最佳答案
我也遇到同样的问题
解决方法是替换整个集合。
Set<Many> maniesBkp = one.getManies(); // Instance of PersistentSet
maniesBkp.remove(manyToRemove);
Set<Many> manies = new HashSet<Many>();
manies.addAll(maniesBkp);
one.setManies(manies);
...
manyDao.delete(manyToRemove);
...
oneDao.save(one);
关于java - 从 OneToMany 集合中删除时出现 EntityNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25286999/
什么情况下可以get()在 Google AppEngine 中抛出 EntityNotFoundException ? 是否真的仅在请求时数据存储中不存在所请求的 key 时发生,或者也可能由于调用
我需要一些帮助来解决这个问题。我浪费了一天的时间寻找答案却什么也没找到。 我有一个实体和模型类。实体是简单的数据,模型是实体的 Controller 。在数据库上,我有一个触发器,当发生 AFTER
我的问题很简单,但找到解决方案却成为一项相当乏味且困难的任务。 我有两个 hibernate 实体, 所有者 狗 所有者(或“父”实体)具有三个字段, 姓名 地址 dogs(Dog 实体的集合 - O
我有一个表 BusStops,它与另一个表 RouteTrip 具有外键关系。应用程序使用 Hibernate,因此这通过使用 @ManyToOne 反射(reflect)在代码中。我对 Record
我在 Symfony 和 Doctrine 问题上遇到了一个奇怪的行为,实际上发现这可能与 this 有关漏洞。 request.CRITICAL: Uncaught PHP Exception Do
我有一个表 (Records),它与另一个表 (ProgramTypes) 有外键关系。应用程序使用 Hibernate-JPA,所以这通过使用 @ManyToOne 反射(reflect)在代码中;
访问学说 2 中的代理类属性时 EntityNotFoundException 的可能原因是什么?无论如何,以下是我的实体结构: /** * @ORM\Table(name="comments")
当我尝试在 Twig 中显示相关对象时,由于 ID 在父实体中,所以该关系不存在,但相关实体不在当前数据库中,Symfony 抛出 500 错误 // EntityNotFoundException
我正在我的应用程序中处理异常。在我的服务中,我有这个方法: public Optional getEntityById(Long id) { return Optional.of(Entity
我在这里遇到了一个非常奇怪的情况。当我尝试删除一组实体并立即尝试添加另一组实体(可能会或可能不会再次具有相同的元素)时,我似乎收到以下异常。不需要整个堆栈跟踪,因为它没有说明太多内容。 javax.p
我使用 spring-data-jpa 2.1.3 和 hibernate-core 5.3.7,并且在保存具有现有父实体的子实体时,我有双向一对多关系 EntityNotFoundException
我遇到了一个在 SO 上似乎很普遍但找不到解决方案的异常。 我有两个类(class)。 文档 和关键字。每个文档都包含许多关键字。 可能使事情复杂化,这些类用于使用 Moxy 解码 xml 文档。我假
我有两个通过双向 OneToMany/ManyToOne 关系连接的实体。 @Entity class One { @OneToMany(mappedBy = "one", orphanRemov
我在创建可执行 jar 文件时遇到问题。我通过 Intellij idea X 工件创建 jar 文件。但是当我尝试执行这个 jar 时,它给了我一个错误: Exception in thread "
当用户使用无效 ID 搜索我的存储库时,我想抛出一个自定义错误类。这应该是非常直接的,但我似乎无法捕捉到 JpaRepository 抛出的任何错误。我已经多次尝试解决这个问题,但以下是我最直接的尝试
我想为以下方法编写一个测试: public Account getAccount(Long id) { log.debug("Getting account with id {}", id);
我在我的数据库中破坏了 FK,如果我加载一个实体并请求相关实体 Doctrine 将抛出 \Doctrine\ORM\EntityNotFoundException . 对于有问题的实体,我更喜欢在
我的应用程序服务中有一个方法可以接收实体的id: Document doStuff(Long documentId); 在我的方法中,我检查传递的 id 是否与之前存储的实体匹配,如果不匹配,则会抛
Exception in thread "main" javax.persistence.EntityNotFoundException: Unable to find CNPJ with id 00
我目前使用的是 Spring Boot 2.1.1.RELEASE、Hibernate Envers 5.3.7.Final。 当我查询 User 类的 AuditEntity 时,它将抛出 java
我是一名优秀的程序员,十分优秀!