我收到ObjectNotFoundException.how来解决这个异常?
org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [org.sampleproject.tool.assessment.data.dao.assessment.SectionData#1822]
at org.hibernate.impl.SessionFactoryImpl$1.handleEntityNotFound(SessionFactoryImpl.java:386)
at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:145)
at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:179)
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:103)
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:879)
at org.hibernate.impl.SessionImpl.load(SessionImpl.java:796)
at org.hibernate.impl.SessionImpl.load(SessionImpl.java:789)
at org.springframework.orm.hibernate3.HibernateTemplate$3.doInHibernate(HibernateTemplate.java:569)
at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:419)
at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
at org.springframework.orm.hibernate3.HibernateTemplate.load(HibernateTemplate.java:563)
at org.springframework.orm.hibernate3.HibernateTemplate.load(HibernateTemplate.java:557)
答案 0 :(得分:1)
您的数据结构中是否存在关系?
快速修复:
使用此ID#1822
将记录插入地址表或者
使用此ID删除地址记录 - 来自人表的#1822
答案 1 :(得分:0)
首先检查您的密钥 - 如果DB中存在密钥?
答案 2 :(得分:0)
来自Java Doc
当
Session.load()
无法选择具有给定主键(标识符值)的行时抛出。调用load()
时可能不会抛出此异常,即使数据库上没有行,因为load()
会尽可能返回代理。应用程序应使用Session.get()
来测试数据库中是否存在行。
因此,如果数据库中存在给定密钥,请检查您的密钥。
答案 3 :(得分:0)
看起来你在数据库中遗漏了一些日期。 如果您真的想忽略它,请尝试使用:
注释该属性@NotFound( action = NotFoundAction.IGNORE )
或者如果您使用的是XML,请执行以下操作:
<xxx-to-yyy ... not-found="ignore" />