org.hibernate.ObjectNotFoundException:不存在具有给定标识符的行

时间:2012-03-29 20:42:06

标签: hibernate

  1. EmpInformation文件包含与Department Class具有多对一的<composite-id>标记。
  2. <hibernate-mapping>
        <class name="EmpInformation" table="emp_info" >
    
            <composite-id name="id" class="info">
                   <key-property name="XXXid" type="int">
                        <column name="xxxid" />
                   </key-property>
              <key-property name="AAA" type="string">
                        <column name="aaa" length="50" />
                   </key-property>
                   <key-property name="BBB" type="string">
                        <column name="bbb" length="50" />
                   </key-property>
            </composite-id>
    
            <many-to-one name="Dept" class="Department" update="false" insert="false" fetch="select">
                        <column name="AAA" length="50" not-null="true" />
                   <column name="BBB" length="50" not-null="true" />
            </many-to-one>
    
        </class>
    </hibernate-mapping>
    
    1. 部门类有更多的映射多对一和一些属性。
    2. <hibernate-mapping>
          <class name="Department" table="dept_table">
      
              <composite-id name="id" class="deptId">
      
            <key-property name="AAA" type="string">
                      <column name="aaa" length="50" />
                  </key-property>
                  <key-property name="BBB" type="string">
                      <column name="bbb" length="50" />
                  </key-property>
              </composite-id>
      
           <many-to-one name="Store" class="DepartmentStore" update="false" insert="false" fetch="select">
                  <column name="AAA" length="50" not-null="true" />
             <column name="BBB" length="50" not-null="true" />
              </many-to-one>
      
              <property name="ReportId" type="java.lang.Integer">
                  <column name="report_id" />
              </property>
      
          </class>
      </hibernate-mapping>
      

      我的问题是每当我试图在getDepartment上调用ReportID时它会给出错误org.hibernate.ObjectNotFoundException:不存在具有给定标识符的行: 好像我没有收到部门信息。

      1. 列出a = createCriteria(EmpInformation.class);

      2. 整数I = a.getDepartment()。getReportID();

      3. 这是我们用来访问Dept信息的stmt:

        <many-to-one name="Dept" class="Department" update="false" insert="false" fetch="select">
        

        我想在这里指出更多信息

        1. 默认情况下,Lazy为true,因此每当我访问子表实体时,它都应该获取该信息但不会。
        2. 这是必须的update =“false”insert =“false”如果我删除那么它要求我把它。
        3. 我看起来像数据问题,但仍然无法找到正在发生的事情。

1 个答案:

答案 0 :(得分:0)

是的,这是一个数据问题。每当您尝试通过传递父表列id从子项检索数据时,应该在子表中可用的id的相同数据。否则,您将收到ObjectNotFound异常错误。