Hibernate 4.2, нет ли каскадного сопоставления по умолчанию "многие к одному"? - PullRequest
0 голосов
/ 05 мая 2020

Я много раз видел, что по умолчанию спящий режим cascade равен "none". То есть, если вы опустите тег cascade в сопоставлении xml, он будет таким же, как "none".

Сегодня я наблюдал странное поведение, когда класс A, который один к классу B обновлял таблицы класса B (и даже зависимые коллекции B).

Добавление cascade="none" устранило мою проблему.

Но мой вопрос остается тем же: что является каскадом по умолчанию для сопоставления многие-к-одному xml в спящем режиме?

ОБНОВЛЕНИЕ 6.05.20 Я подозреваю, что по умолчанию cascade имеет какое-то внутреннее (не none состояние) и в этом режиме объекты процесса гибернации с компонентами (в условиях гибернации). Во время сеанса отладки я заметил список «управляемых» объектов, которые не изменились, но помечены как «грязные» по неизвестной причине.

TL; DR

Образец xml отображение. AuditRecord относится к классу «многие к одному» для пользователей. Постоянные обновления AuditRecord (иногда!) Класс пользователя и зависимые коллекции.

<hibernate-mapping default-lazy="false" default-access="field">
    <class name="package.AuditRecord" table="audit_record">
        <id name="uuid" type="string">
            <column name="uuid" sql-type="char(32)" not-null="true" />
            <generator class="assigned" />
        </id>
        <many-to-one name="user" class="package.User" cascade="none">
            <column name="user_uuid" sql-type="char(32)" not-null="false" />
        </many-to-one>
        <property name="success" type="boolean" not-null="true"/>
        ...
    </class>
</hibernate-mapping>

Пример Java кода, который на самом деле сохраняется AuditRecord класс.

      Transaction tx = session.beginTransaction();
      try {
          session.saveOrUpdate(pObject);
          session.flush();
          tx.commit();
      } catch (Exception e) {
          tx.rollback();
          ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...