如何解决ObjectNotFoundException?

时间:2015-03-27 11:35:07

标签: java hibernate

我收到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)

4 个答案:

答案 0 :(得分:1)

您的数据结构中是否存在关系?

  1. 想象一下两张桌子: people&解决
  2. 您有两个表示这些表的对象:Person&地址
  3. 地址,因此表包含列地址 哪些引用到地址表中的主键。 现在想象一下,在表中,你有一个地址表本身不存在的地址,在你的情况下表包含一个带ID的地址 - #1822,但记录不在地址表中。
  4. 快速修复:

    • 使用此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" />