我正在尝试创建一种自定义的计算方式,并传递符合我自己模式的唯一ID。
Hibernate具有@GenericGenerator注释,允许您映射自定义类以计算唯一ID并将其分配回@Id列。
例如
@Id
@GeneratedValue(generator="MyIdGenerator")
@GenericGenerator(name="MyIdGenerator", strategy="com.test.MyIdGenerator")
问题是我不想在包级别使用(休眠)@GenericGenerator。 这可以是“纯粹的”JPA / 2吗?
感谢您的时间。
答案 0 :(得分:16)
不,它没有。只有没有第三方的可能性是自己分配价值。如果你想从调用设置id的方法中保存自己,那么可以使用例如Prepersist回调。
@PrePersist
public void ensureId() {
id = ...
}
答案 1 :(得分:0)
如果您使用的是EclipseLink,则可以定义自己的自定义Sequence对象。
http://wiki.eclipse.org/EclipseLink/Examples/JPA/CustomSequencing
JPA 2.0没有定义自定义序列生成器,但JPA 2.1确实定义了一个可能有用的Converter API。