JPA: есть ли способ вернуть следующий доступный ПК - PullRequest
0 голосов
/ 07 января 2011

если поле id внутри моего Entity похоже на это

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

, то когда я persist сущность, создается уникальный случайный идентификатор.Есть ли способ, которым я могу получить следующий доступный ПК до persist

Ответы [ 4 ]

2 голосов
/ 07 января 2011

Нет в спецификации, хотя некоторые реализации могут предоставить средства. Проблема в том, что идентификатор генерируется базой данных в некоторых случаях, будь то последовательность или автоинкремент. JPA слишком сложно знать, что делать.

1 голос
/ 10 января 2011

В EclipseLink вы можете сделать эту покупку,

Number nextId = entityManager.unwrap(Session.class).getNextSequenceNumberValue(MyEntity.class);
1 голос
/ 07 января 2011

Не зная точно, что вы планируете делать с идентификатором, когда он у вас есть, я нашел эту ссылку , которая может оказаться полезной.Я написал бы собственный класс последовательности, который просто вызывает супер-методы для генерации идентификатора, но затем делал бы то, что вам нужно, как только он у вас будет.

0 голосов
/ 30 июня 2011

@ Harry Pham См. Руководство пользователя Eclipselink:

http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Entities/Ids/GeneratedValue

Внизу указано, что уже сказал Джеймс.Вы можете использовать следующий код для получения следующего значения порядкового номера:

long id = em.unwrap(Session.class).getNextSequenceNumberValue(Employee.class).longValue();

Класс Session находится в пакете org.eclipselink.persistence.Sessions.

Но его использование является собственностью eclipselinkне JPA.

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