在hibernate中管理一个序列

时间:2012-02-28 08:01:17

标签: hibernate

我有一个数据库表,其中id为主键 在对象中,我使用@Id定义了colomn getter 当用户创建新行时,它会为其分配新的ID 但它也为旧对象分配了一个新的id。

因此, 当我使用

迭代列表时
for(){
    session.save(myO);
}

我在db中为新元素获取了新行,但也为旧元素添加了新行。 任何帮助? 谢谢。

2 个答案:

答案 0 :(得分:1)

The javadoc说:

  

保留给定的瞬态实例,首先分配生成的   标识符

您应该在现有的分离实例上调用savesave是坚持一个新的实体。使用saveOrUpdatemerge

答案 1 :(得分:0)

首先在数据库中创建如下所示的序列

创建序列SEQ_MFILTERGROUP MINVALUE 1 MAXVALUE 99以1个CACHE 20开始递增;

< class name =“example.FilterGroup”table =“FILTERGROUP”>

< id name =“id”>

generator class =“sequence”>

< param name =“sequence”> SEQ_MFILTERGROUP< / param>

< /发电机>

< / ID>

< /类>