我使用Hibernate和越來越「與給定的標識符的行存在」,但它確實存在
異常線程「main」 org.hibernate.ObjectNotFoundException:與給定的標識符的行存在:[# 271]
這個錯誤的奇怪之處在於,具有給定標識的對象存在於數據庫中。我在應用程序的另一個運行中插入了有問題的記錄。如果我在同一次運行中訪問它(即相同的休眠會話),檢索數據似乎沒有問題。
只是因爲它可能是映射的故障:
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查詢來查看它。在THAT之後,即再次啓動應用程序時,我在數據庫的FIRST查詢中收到錯誤 - 不刪除,不涉及回滾。
增加: 因爲有人問,這裏是獲取數據的代碼:
public List<ProblemClass> getProblemClasses() {
Query query = session.createQuery("from ProblemClass");
return query.list();
}
而這只是爲了完整,這裏是通用的代碼,將其插入(在另一個運行在讀取前該應用程序):
public void save(Persistent persistent) {
session.saveOrUpdate(persistent);
}
使用InnoDB表格... – 2010-05-17 10:09:14
非常感謝您發佈答案! – Lisa 2013-10-25 04:08:49