org.hibernate.ObjectNotFoundException: строки с данным идентификатором не существует - PullRequest
0 голосов
/ 30 марта 2012
  1. Файл EmpInformation содержит тег <composite-id>, имеющий много-к-одному с классом отдела.

<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. У класса Department есть еще несколько сопоставлений "многие к одному" и некоторые свойства.

<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>

Мои вопросы: всякий раз, когда я пытаюсь вызвать ReportID на getDepartment, он выдает ошибку как org.hibernate.ObjectNotFoundException: не существует строки с данным идентификатором: Кажется, я не получаю информацию Департамента.

  1. Список a = createCriteria (EmpInformation.class);

  2. Целое число I = a.getDepartment (). GetReportID ();

Это то, что мы используем для доступа к информации отдела:

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

Я хочу указать здесь дополнительную информацию

  1. По умолчанию Lazy имеет значение true, поэтому всякий раз, когда я обращаюсь к объекту дочерней таблицы, он должен получить эту информацию, но не получит.
  2. Это обязательно update = "false" insert = "false", если я удаляю то, он просит меня поставить это.

Я выгляжу как проблема с данными, но все еще не могу найти, что происходит.

1 Ответ

0 голосов
/ 28 августа 2013

Да, это проблема с данными.Всякий раз, когда вы пытаетесь получить данные от дочернего элемента, передавая идентификатор столбца родительской таблицы, те же данные для идентификатора, которые должны быть доступны в дочерней таблице.В противном случае вы получите ошибку как исключение ObjectNotFound.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...