Есть ли в JPA что-то вроде hibernates '@GenericGenerator' для создания пользовательских идентификаторов? - PullRequest
11 голосов
/ 18 сентября 2011

Я пытаюсь создать собственный способ вычисления и передачи уникальных идентификаторов, которые следуют моему собственному шаблону.

Hibernate имеет аннотацию @GenericGenerator, которая позволяет сопоставить пользовательский класс для вычисления уникального идентификатора и присвоения его обратно столбцу @Id.

Пример

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

Дело в том, что я не хочу использовать (спящий режим) @GenericGenerator на уровне пакета. Может ли это быть в «чистом» JPA / 2?

Спасибо за ваше время.

Ответы [ 2 ]

16 голосов
/ 18 сентября 2011

Нет, не имеет.Единственная возможность без третьей стороны - присвоить значение самостоятельно.Если вы хотите уберечь себя от вызова метода, который устанавливает id, то, например, можно использовать обратный вызов Prepersist.

  @PrePersist
  public void ensureId() {
    id = ...
  }
0 голосов
/ 25 марта 2013

Если вы используете EclipseLink, вы можете определить свой собственный объект Sequence.

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

JPA 2.0 не определяет генератор пользовательских последовательностей, но JPA 2.1 определяет API-интерфейс Converter, который может быть полезен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...