【发布时间】:2011-02-20 07:01:26
【问题描述】:
我正在使用 Hibernate 并获得
线程“主”org.hibernate.ObjectNotFoundException 中的异常:不存在具有给定标识符的行:[#271]
这个错误非常奇怪的是,具有给定 id 的对象存在于数据库中。我在应用程序的另一次运行中插入了有问题的记录。如果我在同一次运行(即同一个休眠会话)中访问它,检索数据似乎没有问题。
只是因为它可能是映射的错误:
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);
}
【问题讨论】: