hibernate - 使用 JPA 绕过 "Entity not found"错误

标签 hibernate jpa

有时,彻底删除对实体的所有引用非常困难(或存在性能问题)。

例如,我有一个 Person 对象,它与另一个 Person 对象有关系。

当我删除一个Person时,我不想删除她可以拥有的所有关系中的这个Person,因为有时这个Person对象不知道它在哪里被引用。因此,如果我想彻底删除所有引用,我必须执行额外的 sql 工作,这可能会导致性能问题。

在理想的世界中,我想删除 Person 对象,并且当另一个 Person 引用此 Person 时(因为它的关系中有它的 id),只需返回 null。

事实上,JPA 提示说

javax.persistence.EntityNotFoundException: No row with the given identifier exists

在这种情况下,有没有办法强制 JPA 返回空引用而不是异常?

最佳答案

您可以使用@NotFound值为 NotFoundAction.IGNORE 的注释,如果关联实体不存在,则返回 null。

需要注意的是:如果你在集合中使用它并且 hibernate 找不到其中一个条目,它会在集合中添加一个空值,这是非常烦人的。为了避免这种情况,您可以将集合包装在跳过空值的集合中。

关于hibernate - 使用 JPA 绕过 "Entity not found"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7146064/

相关文章:

java - 设置实体数据添加到现有数据,而不是替换补丁请求上的所有现有值

java - Hibernate 坚持零而不是双值

java - hibernate 的 JPA 实现是否缺少实现?

java - 没有定义名为 'persistenceUnit' 的 bean

java - 如何使用 jpa (hibernate) 从表中仅选择 postgres jsonb 列

java - JPA 合并导致外国实体重复输入

java - 当java使用getBoolean时,错误无法转换为内部表示 - JAVA,ORACLE

java - 我想了解 tomcat 服务器消息

java - @OneToMany 关联的标准

java - Hibernate递归查询