我正在使用Hibernate并获取
线程"main"中的异常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 Code Online (Sandbox Code Playgroud)
我绝对不知道哪里可以看.任何提示高度赞赏!
只是为了澄清:数据被插入到应用程序的另一个RUN中.它肯定在数据库中,因为我可以在应用程序终止后通过SQL查询看到它.在那之后,即再次启动应用程序时,我在数据库的FIRST查询中得到错误 - 没有删除,也没有涉及回滚.
另外:因为有人问过,这里是获取数据的代码:
public List<ProblemClass> getProblemClasses() {
Query query = session.createQuery("from ProblemClass");
return query.list();
}
Run Code Online (Sandbox Code Playgroud)
只是为了完成它,这里是插入它的通用代码(在获取应用程序的另一个RUN之前):
public void save(Persistent persistent) {
session.saveOrUpdate(persistent);
}
Run Code Online (Sandbox Code Playgroud)
roe*_*erj 24
尤里卡,我找到了!
问题如下:
表中的数据ThirdClass
未正确保留.由于此数据是从MyDbObject引用的
optional = false
Run Code Online (Sandbox Code Playgroud)
Hibernate进行了内连接,因此为连接返回一个空结果.因为如果在一个会话中执行数据(我想在缓存中),那就没有问题了.
MySQL不强制执行外键完整性,因此在插入损坏的数据时不会抱怨.
解决方案:可选=真实或正确插入数据.
归档时间: |
|
查看次数: |
71489 次 |
最近记录: |