Hibernate在分配id时始终更新但不插入新记录

Hibernate在分配id时始终更新但不插入新记录,hibernate,grails,Hibernate,Grails,我现在正在做的工作需要用户在创建记录时定义id(主键)。但是,只要提供了id,保存过程就会变成更新而不是插入 详情如下:, 技术:Groovy和Grails1,Hibernate3。 配置: myclass.hbm.xml,我更改了id 从 我的身份证 到 在模型类MyClass.groovy中,我显式地将id定义为属性 我已经证明了这一点。当id被排序并自动生成时,我可以看到insert语句被打印出来,并且记录在表中。在分配id和我分配(新)id之后,它总是打印更新 希望信息清晰且足以

我现在正在做的工作需要用户在创建记录时定义id(主键)。但是,只要提供了id,保存过程就会变成更新而不是插入

详情如下:, 技术:Groovy和Grails1,Hibernate3。 配置: myclass.hbm.xml,我更改了id 从


我的身份证


在模型类MyClass.groovy中,我显式地将id定义为属性

我已经证明了这一点。当id被排序并自动生成时,我可以看到insert语句被打印出来,并且记录在表中。在分配id和我分配(新)id之后,它总是打印更新


希望信息清晰且足以提供帮助。

不要为
分配的
id生成器指定
未保存的值
属性


默认情况下,
分配的
id生成器的
未保存值
未定义的
,我不建议更改它。在当前的id生成器定义中,基本上是告诉Hibernate,id字段中具有
null
值的对象是瞬态的,而其他对象不是。因此,具有非空ID的对象永远不会被认为是暂时的。

如果需要,可以这样使用

<hibernate-mapping package="your-package">
<class name="Sequence" table="sequence">
<id name="id" type="long">
<generator class="increment"/>

在上述情况下,默认情况下,它将从1开始。
序列:-用于从1开始的序列,但您也可以在创建表时指定任何其他数字。

这可能是您要查找的数字,也可以检查
  <id name="id" type="long" column="MY_ID" unsaved-value="null">
    <generator class="assigned">
    </generator>
</id>
<hibernate-mapping package="your-package">
<class name="Sequence" table="sequence">
<id name="id" type="long">
<generator class="increment"/>