2011-05-06 79 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

希望对你有用。