当前位置: 首页 > 面试题库 >

使用JPA绕过“找不到实体”错误

洪黎昕
2023-03-14
问题内容

有时很难清除(或存在性能问题)删除对实体的所有引用。

例如,我有一个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找不到条目之一,它将在集合中添加一个空值,这很烦人。为避免这种情况,您可以将集合包装在跳过空值的集合中。



 类似资料:
  • 问题内容: 我已经为此厌倦了很长时间。我不知道是什么原因导致此错误。这是我的文件: Uzytkownik.hbm.xml hibernate.cfg.xml: 我使用的是MySQL 5.5。 我收到以下错误: 这是我的课程:main.java Uzytkownik.java: HibernateUtil.java: 问题答案: 也许您的映射文件不完整,但其他方面应该是: =>需要设置完全合格的类名

  • 主要内容:JPA实体查找示例要找到一个实体,接口提供了方法,该方法根据主键搜索一个元素。 JPA实体查找示例 在这里,我们将搜索指定的记录并在控制台输出它的值。 完整的项目代码如下所示 - 这个例子包含以下步骤 - 第1步: 在包下创建一个名为的实体类,它包含属性:,和。 文件:StudentEntity.java 的代码如下 - 第2步: 将实体类和其他数据库配置映射到文件中。 文件:persistence.xml 的代码

  • 我对JPA和ORMs真的很陌生,所以我希望你原谅我的愚蠢问题。我在这个博客和其他网站上读了很多帖子,但建议的解决方案,即使看起来合理,对我来说并不奏效。 我哪里搞错了?多谢帮忙。 编辑:我已添加导入

  • 因此,当我右键单击项目->JPA工具->从实体创建表时, 我得到以下错误: 线程“main”本地异常堆栈中的异常:异常[EclipseLink-30005](Eclipse Persistence Services-2.6.0.v20140809-296A69F):org.Eclipse.Persistence.exceptions.Persistence.exceptions.persisten

  • 很难弄清楚我是在打虫子还是在做傻事... Spring Boot v2.0.0. M7,sping-data-jpa,sping-data-rest,MySQL 以下@Query 在一个上抛出一个 statusCode是一个varchar,本身作为@Entity按预期工作,但试图投影到字符串列表(或

  • 我正在使用Restet,我想知道如果设置了ServerResource实体类型,例如,对于这种类型的实体,是否可能: 我们如何能够在不需要传递所有字段的情况下发布呢?在本例中,我们只想从客户端请求传递“name”,但这样做会引发