JPA是否有类似hibernates'@通用生成器';用于生成自定义ID?

JPA是否有类似hibernates'@通用生成器';用于生成自定义ID?,jpa,jpa-2.0,Jpa,Jpa 2.0,我正在尝试创建一种自定义的计算方式,并按照我自己的模式传递唯一的id Hibernate有@GenericGenerator注释,它允许您映射一个自定义类来计算唯一id并将其分配回@id列 范例 @Id @GeneratedValue(generator="MyIdGenerator") @GenericGenerator(name="MyIdGenerator", strategy="com.test.MyIdGenerator") 问题是我不想在包级别使用(hibernate

我正在尝试创建一种自定义的计算方式,并按照我自己的模式传递唯一的id

Hibernate有@GenericGenerator注释,它允许您映射一个自定义类来计算唯一id并将其分配回@id列

范例

  @Id 
  @GeneratedValue(generator="MyIdGenerator")
  @GenericGenerator(name="MyIdGenerator", strategy="com.test.MyIdGenerator")
问题是我不想在包级别使用(hibernates)@GenericGenerator。 这可以是“纯”JPA/2吗


谢谢你的时间。

不,没有。没有第三方的唯一可能性是自己分配价值。若您想避免调用设置id的方法,那个么可以使用例如Prepersist回调

  @PrePersist
  public void ensureId() {
    id = ...
  }

如果使用EclipseLink,则可以定义自己的自定义序列对象


JPA 2.0没有定义自定义序列生成器,但JPA 2.1定义了一个转换器API,这可能很有用。

确实是一个非常优雅的解决方案。真的允许吗?当规范声明:一般来说,可移植应用程序的生命周期方法不应调用EntityManager或查询操作、访问其他实体实例或修改同一持久性上下文中的关系时,该规范是不明确的[46]。[47]生命周期回调方法可能会修改调用它的实体的非关系状态。转换器不能用于ID。这是我要问的问题。日食序列对象可能就是我的答案