休眠,插入后立即更新

时间:2019-03-22 11:24:26

标签: xml hibernate dictionary mapping

我有一个映射对象,该对象具有另一个映射对象的集合。 每当包含的集合中的对象是数据库的新对象时,我都会发生插入行为并随之进行更新。

我的问题是:

- 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 但没有答案。

我还发现有一个标记“ update”,这似乎有用,但这是描述行为的原因吗?

映射:

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

0 个答案:

没有答案