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

“不存在具有给定标识符的行”,尽管确实存在

阎安邦
2023-03-14
问题内容

我正在使用Hibernate并获得

线程“主”中的异常org.hibernate.ObjectNotFoundException:不存在具有给定标识符的行:[#271]

关于此错误,很奇怪的是,具有给定id的对象存在于数据库中。我在另一个应用程序运行中插入了有问题的记录。如果我在同一运行(即同一hibernate会话)中访问它,则检索数据似乎没有问题。

仅因为这可能是映射的错误:

public class ProblemClass implements Persistent {
  @ManyToOne(optional = false)
  private MyDbObject myDbObject;
}
public class MyDbObject implements Persistent {
  @OneToMany(mappedBy = "myDbObject")
  private List<ProblemClass> problemClasses;
  @ManyToOne(optional = false)
  private ThirdClass thirdClass;
}

我什至不知道在哪里看。任何提示高度赞赏!

只是为了澄清一下:数据已插入到应用程序的另一个RUN中。它肯定在数据库中,因为在应用程序终止后,我可以通过SQL查询看到它。然后,即再次启动应用程序时,我在数据库的第一个查询中得到了错误-
不删除,不涉及回滚。

另外:因为有人问,这里是获取数据的代码:

public List<ProblemClass> getProblemClasses() {
    Query query = session.createQuery("from ProblemClass");
    return query.list();
}

只是为了使其完整,这是插入它的通用代码(在获取应用程序的另一个RUN之前):

public void save(Persistent persistent) {
    session.saveOrUpdate(persistent);
}

问题答案:

尤里卡,我找到了!

问题如下:

表中的数据ThirdClass未正确保留。由于此数据是通过MyDbObject引用的

optional = false

Hibernate进行了内部联接,因此为联接返回空结果。因为数据是在一个会话中执行的(我想是在缓存中),所以没有问题。

MySQL不强制执行外键完整性,因此不会抱怨插入损坏的数据。

解决方案:可选=正确或正确插入数据。



 类似资料:
  • 从关系设计的角度来看,我有一个名为Request的表,其中包含客户更改请求列表。每个客户请求将与RequestStatus表具有1对1的关系。 这意味着每个请求只有一种状态类型:挂起、已分配、已完成。因此,1对1的关系。 在我的pojo代码中,这是我的请求文件: 然后,这是我的RequestStatus文件: } 从数据的角度来看,在Request表中,肯定会有重复RequestStatus的可能

  • 我在我的spring boot应用程序中出现了这个错误。当我想调用这个存储库时,我遇到了这个错误 这是我的存储库: 这就是我称之为此方法的地方: 如何检查方法返回的结果?我调试了我的代码,但在断点它只是返回这个错误。 谢谢你的帮助。

  • 当我尝试使用findById()方法从数据库中获取单个记录时,或者当我尝试使用spring数据REST更新一篇文章时,我遇到了一个异常:找到了具有给定标识符的不止一行。 delete和findAll方法正常工作。 我已经检查了数据库,没有多个相同ID的记录。另外,id是数据库中的唯一键。我见过很多人有同样的错误,但这些人的问题是他们在哪里使用联接。我没有任何加入。 该实体: 存储库: 例外情况:

  • 当我尝试使用findById()方法从数据库中获取单个记录时,或者当我尝试使用spring数据REST更新一篇文章时,我遇到了一个异常:找到了具有给定标识符的不止一行。 delete和findAll方法正常工作。 我已经检查了数据库,没有多个相同ID的记录。另外,id是数据库中的唯一键。我见过很多人有同样的错误,但这些人的问题是他们在哪里使用联接。我没有任何加入。 该实体: 存储库: 例外情况:

  • 问题内容: 雇员表具有ID和NAME列。名称可以重复。我想找出是否至少有一个名称类似“ kaushik%”的行。 因此查询应返回true / false或1/0。 是否可以使用单个查询找到它。如果我们尝试类似 在这种情况下,它不会返回true / false。另外,我们正在遍历表中的所有记录。简单SQL中是否存在这样的方式,使得每当获取满足条件的第一条记录时,它都应停止检查其他记录。还是只能在Pl

  • 我在使用spring数据从1对1关系btn表检索数据时遇到了一个问题。我已经回顾了平台上的几个解决方案,但奇怪的是,在问题首次出现之前,我已经实现了所有建议的解决方案。请帮助我找到我所缺少的东西,或是使对他人有用的解决方案对我无效的任何东西。 以下是这两个实体之间的关系 错误消息: 2021-12-23 15:02:42.116错误11144---[nio-8089-exec-5]o.a.c.c.