代码之家  ›  专栏  ›  技术社区  ›  David

为什么nhibernate没有意识到我的域对象需要更新,而不是插入?

  •  0
  • David  · 技术社区  · 14 年前

    我有一个使用nhibernate加载域对象的网页。然后,对象的状态存储在页面控件中,当用户单击“保存”按钮时,将创建一个新对象,并从页面控件填充其属性(包括ID)。然后在对象上调用session.save()。

    这对我来说意味着nhibernate应该使用更新而不是插入,因为id属性已经设置并且与未保存的值不同。然而,NHibernate正试图插入它。

    我已包含与以下ID相关的映射文件部分:

    <id name="Id" column="StoredWillId" unsaved-value="0">
      <generator class="native" />
    </id>
    

    有人能解释一下这是怎么回事吗?

    谢谢

    戴维

    1 回复  |  直到 14 年前
        1
  •  3
  •   Kimi    14 年前

    调用session.saveorupdate()。session.save()插入,session.update()更新,session.saveorupdate()如果id为0,则保存,否则更新。