2010-02-24 114 views
0

我有一個數據庫與現有的數據,其中以前我一直使用數據庫上的AUTO_INCREMENT生成PK。NonUniqueObjectException遷移到hilo生成器策略

爲了提高性能和方便的批量插入,我試圖引進一個不同的密鑰生成策略:

public class BaseEntity implements Serializable { 

@Id 
@GeneratedValue(generator="generator") 
@GenericGenerator(
     name="generator", strategy="hilo") 
private Integer id; 

我發現單據上@GenericGenerator語法很難得的,所以我不確定如果我已經正確實施它。據我瞭解,這個生成器爲實體PRIOR生成一個PK來執行INSERT,因此不需要插入後查詢來發現pk。

但是,它試圖執行INSERT時導致org.hibernate.NonUniqueObjectException異常 - 大概是因爲hibernate試圖用於PK的值已被使用。

我在這裏的理解是否正確,如果是的話 - 如何配置Hibernate在啓動時讀取適當的表並選擇較低的PK界?

回答

0

看來你正在使用tablehilo。無論如何,Generator代碼對於排除故障非常重要。所以,請提供相關的片段。

此外,我強烈建議你看看this approach here,如果你還沒有。

+0

沒有其他代碼可用(也許這是錯的)。我從文檔中獲得「策略是Hibernate3生成器策略的簡稱」,「hilo」是一個有效的字符串。 我會看看你提供的方法 - thx。 – 2010-02-24 14:35:01