如果用户没有为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的方式进行编写。
答案 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
希望对你有用。