Вы можете создать собственный генератор последовательностей, используя аннотацию @GenericGenerator
. Это характерно для Hibernate, но известно, что оно работает в JPA.
@Id
@GeneratedValue(generator="custom-code-generator")
@GenericGenerator(name="custom-code-generator", strategy = "classname-of-generator",
parameters={...annotated parameters like the sequence name can be specified here ...})
@Column(name = "id")
private Integer id;
Стратегия должна быть реализована в классе, который реализует интерфейс PersistentIdentifierGenerator
, и, как отмечено в документации API, пользовательские генераторы также будут реализовывать интерфейс Configurable
разрешить настройку генератора.
Использование аннотации @PostPersist
также будет работать, поскольку идентификатор не сбрасывается в базу данных до тех пор, пока не будет сброшен EntityManager или не будет зафиксирована транзакция, связанная с EntityManager.