如何在hibernate中按需生成GUID?

时间:2011-05-06 02:13:35

标签: hibernate guid

如果用户没有为COMPONENT命名,我想生成GUID ID,

@Entity class Component {

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

}

我不能在这里使用生成器,所以我可以明确指定名称。

虽然我可以添加另一个id字段,并将名称设为@NaturalId:

@Entity class Component {

    @Id
    Long id;

    @Column(length = 32)
    String name; 

}

但问题仍然是:如何为名称生成GUID?

我自己可以编写一个简单的GUID生成器,但我想以Hibernate的方式进行编写。

1 个答案:

答案 0 :(得分:1)

尝试看看EmptyInterceptor,我想你可以捕获onSave事件,如果没有设置,请更新你的“名字”。

只需使用UUID类生成您需要的内容,我认为它将涵盖它。

在Hibernate的情况下GUID将利用数据库在mySql和MSSS的情况下生成GUID(我认为)

您可以将拦截器应用程序范围扩大或仅限于特定会话。

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

希望对你有用。