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