Dimman
Dimman

Reputation: 1206

Does JPA have something like hibernates '@GenericGenerator' for generating custom ids?

I'm trying to create a custom way of computing and passing unique id's that follow my own pattern.

Hibernate has the @GenericGenerator annotation that lets you map a custom class for computing a unique id and assigning it back to the @Id column.

example

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

The thing is that i don't want to use (hibernates) @GenericGenerator at package level. Can this be in "pure" JPA / 2 ?

Thanks for your time.

Upvotes: 11

Views: 11479

Answers (2)

James
James

Reputation: 18379

If you are using EclipseLink, you can define your own custom Sequence object.

http://wiki.eclipse.org/EclipseLink/Examples/JPA/CustomSequencing

JPA 2.0 does not define a custom sequence generator, but JPA 2.1 does define a Converter API, which may be of use.

Upvotes: 1

Mikko Maunu
Mikko Maunu

Reputation: 42114

No, it doesn't have. Only possibility without 3rd party is to assign value by yourself. If you want to save yourself from calling method that sets id, then for example Prepersist callback can be used.

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

Upvotes: 16

Related Questions