Спящий режим, обновляйте сразу после вставки - PullRequest
0 голосов
/ 22 марта 2019

У меня есть сопоставленный объект, у которого есть коллекция других сопоставленных объектов. Всякий раз, когда объект в содержащейся коллекции является новым для БД, у меня есть поведение вставки с последующим обновлением.

Мои вопросы:

- What is the purpose of this secondary update?
- How can I listen to it? 

Добавление PreUpdateEventListener не работает.

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

Я нашел такой вопрос здесь: https://forum.hibernate.org/viewtopic.php?f=1&t=1011641 но ответа нет.

Кроме того, я обнаружил, что есть флаг «обновление», кажется, делает свое дело, но является ли это причиной описанного поведения?

Отображение:

<class>
 ...
<map name="attributes" table="DEF"
     cascade="all-delete-orphan" lazy="false" batch-size="5">
    <key not-null="true">
        <column name="PID"/>
        <column name="CDATE"/>
    </key>
    <map-key column="NAME" type="string" alias="name"/>
    <one-to-many entity-name="DocumentAttributes"/>
</map>
  ...
<class>

 <class name="com.moc.Attribute"
       entity-name="DocumentAttributes" table="DEF"
       dynamic-update="true"
       dynamic-insert="true">..</class>

Журналы гибернации:

Hibernate: insert into BDOC (ID, CDATE) values (?, ?) 
// Why this insertion consists all columns despite being dynamic?
Hibernate: insert into DEF (TYPE, VALUE, IS_CHANGED, PID, CDATE, NAME, id) values (?, ?, ?, ?, ?, ?, ?) 
//Why this update happen??
Hibernate: update DEF set PID=?, CDATE=?, NAME=? where id=?   

Кто-нибудь здесь может описать такое поведение?

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