【问题标题】:INSERT instead of UPDATE with Hibernate使用 Hibernate 插入而不是更新
【发布时间】:2011-08-04 02:54:10
【问题描述】:

我有一个类,我坚持使用 Hibernate。它存储在一个包中,并使用序列生成器生成其 ID,如下所示:

<class name="Parent">
  <id name="id" />
  <bag name="children" access="field">
    <key column="parent_id" not-null="true" />
    <one-to-many class="Child" />
  </bag>
</class>

<class name="Child">
  <id name="id">
    <generator class="sequence">
      <param name="sequence">child_seq</param>
    </generator>
  </id>

  <many-to-one name="status" not-null="true" cascade="none" />
</class>

当 Child 的 status 属性被修改时,应该插入一个新的 Child 记录而不是更新旧的记录。但是,休眠更新。有什么方法可以告诉 Hibernate 它应该 INSERT,还是我必须自己在包外管理它?

【问题讨论】:

  • 听起来您使用休眠的方式令人困惑。您希望Parent.children.size() 与表中的行数不同吗?为什么不直接向包中添加一个新的 Child 实例?

标签: java hibernate


【解决方案1】:

我相信您必须手动将子对象添加到集合中。因为在休眠状态下,每个实体都与表中的一行相关是正常的做法。因此,要添加新行,您需要向集合中添加一个新子项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-27
    • 2011-07-03
    • 1970-01-01
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多