JPA是否有类似于hibernates的'@GeneGenerator'来生成自定义ID?

时间:2011-09-18 13:51:31

标签: jpa jpa-2.0

我正在尝试创建一种自定义的计算方式,并传递符合我自己模式的唯一ID。

Hibernate具有@GenericGenerator注释,允许您映射自定义类以计算唯一ID并将其分配回@Id列。

例如

  @Id 
  @GeneratedValue(generator="MyIdGenerator")
  @GenericGenerator(name="MyIdGenerator", strategy="com.test.MyIdGenerator")

问题是我不想在包级别使用(休眠)@GenericGenerator。 这可以是“纯粹的”JPA / 2吗?

感谢您的时间。

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。