2011-05-06 89 views
1

我想生成一個GUID ID,如果用戶沒有爲COMPONENT起一個名字,如何在hibernate中按需生成GUID?

@Entity class Component { 

    @Id @Column(length = 32) 
    String name; 

} 

我不能在這裏使用發電機,所以我可以明確的指定名稱。

雖然我可以添加其他ID字段,併名@NaturalId:

@Entity class Component { 

    @Id 
    Long id; 

    @Column(length = 32) 
    String name; 

} 

但問題依舊:我怎樣才能生成名稱的GUID?

我可以自己編寫一個簡單的GUID生成器,但我想要做到這一點休眠方式。

回答

1

試着看看EmptyInterceptor,我想你可以捕獲onSave事件,如果沒有設置,就更新你的「名字」。

只需使用UUID類來生成你需要的東西,我想它會覆蓋它。

GUID在休眠的情況下,將利用數據庫來生成MySQL和MSS的情況下,GUID(我認爲)

您可以範圍的攔截器應用範圍或只針對特定的會話。

http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/events.html#objectstate-interceptors

希望對你有用。