gpt4 book ai didi

java - 对象未找到异常 : No row with the given identifier exists Hibernate

转载 作者:行者123 更新时间:2023-12-01 12:18:07 25 4
gpt4 key购买 nike

我有下一个查询:

String queryString = "from Visit vis "
+ "LEFT OUTER JOIN FETCH vis.pdv vis_pdv ";
return query.list();

之后,当我尝试访问某些 pdv 时,出现下一个错误:

nested exception is org.hibernate.ObjectNotFoundException: No row with the given identifier exists

问题是我有一些损坏的数据,因此“Visit”有时在“pdv”中有一个 id,但表“PDV”中不存在该 pdv。我想在查询中处理这个问题,这样它就不会返回损坏的数据。有什么办法吗?

谢谢

最佳答案

这里有一个类似的问题:org.hibernate.ObjectNotFoundException: No row with the given identifier exists: Single table query

基本上答案是:在 Hibernate 可以使用数据之前,您需要有一个一致的数据库。

我了解到您有 Visit.pvd作为 PVD 的外键的列表,但包含 PVD 中未反射(reflect)的数据。这就是你违反诚信的行为。你能做的是bypassing Hibernate并收集任何 Visit.id识别无效实体的:

session.createSQLQuery("SELECT id FROM Visit "
+ "WHERE pvd NOT IN (SELECT p.id FROM pvd)").list();

这会给你一个 List<Object[]>您可以迭代以获取有问题的实体。用它来 UPDATE它们不包含无效引用(或者仅使用简单的 UPDATE 和我给出的 WHERE 子句)。

关于java - 对象未找到异常 : No row with the given identifier exists Hibernate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26861980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com