2012-07-03 65 views
0

我有一個sql表與自動縮進Id(int) 當我插入一條新記錄時,JSF bean的方法內: 我創建一個新的對象p = new Prop();然後設置除ID之外的所有部分,並將我提交給會話:session.save(p); 這適用於第一條記錄; 當插入第二個或更多記錄我也有NotUniqueObjectException也如果我已經創建了一個新的對象; 我該如何避免這種情況?HIBERNATE:NotUniqueObjectException在插入新的autoicnremnteID對象後

+0

你設置休眠的ID生成策略是什麼? –

回答

0

您可以在休眠

@Id 
@GeneratedValue(strategy=GenerationType.AUTO) 
private int id; 
+0

它仍然不起作用;現在我可以看到它只與第一條記錄一起工作,因爲它創建了一個id = 0的對象,並將它寫入到dbase中;每當我創建一個新的對象,它創建一個id = 0,所以我不能寫新紀錄... – antoiovi

+0

你可以嘗試不同的策略,如身份,... –

+0

現在它是: @ Id @Column(name =「cod」,unique = true,nullable = false) @GeneratedValue(strategy = GenerationType.AUTO) private int cod; – antoiovi

0

設定的ID生成策略,當你正在使用Hibernate,在Hibernate中,我們有,如果你正在使用HBM映射定義自動增量型 然後做下面的一個。

爲HBM映射:

<id name="id" type="java.lang.Long"> 
      <column name="ID" /> 
      <generator class="identity" /> 
     </id> 

用於註釋:

@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
+0

: <發生器類= 「增量」/ 和 @Id @Column(名=「codice」,unique = true,nullable = false)@GeneratedValue(strategy = GenerationType.AUTO)private int cod;它的工作原理;坦克給大家; (現在我必須更好地瞭解它是如何/爲什麼會起作用,但它是另一個問題......) – antoiovi

+0

將它發佈在答案中,除了它自己 – subodh