Как ввести пользовательские идентификаторы объектов в организации JPA
Вопрос
Я использую JPA 2 для корпоративного приложения, и мой DBA просто ударил меня с поворотом.
Они хотят, чтобы я Используйте централизованный генератор объекта группы для всех моих таблиц. Отказ Это означает, что, а не использовать значения таблицы или таблицу последовательности, Мне нужно позвонить веб-службу, чтобы получить партию ~ 50 идентификаторов.
Потом, Как я сохраняю любой новый объект, мне нужно было ввести этот идентификатор первым, и сохраните это к столу.
Так как я бы манипулировал столбцом @ID объекта для обработки этого.
Это так просто, как установить ключ, прежде чем я сохраню? Я подозреваю, что бросит какой-то неуправляемый сущность с ошибкой ID Set.
Решение
Обновлять:
Лучшим методом является фактически указать стратегию последовательности на сгенерированных полях и укажите пользовательский класс последовательности.
JPA затем позвонит следующим способам этого класса () каждый раз, когда он вставляет новый объект.
Этот метод позволяет сохраняться полные графики без вмешательства в каждом объекте вручную.
Догадаться. Удивительно сложный;) - просто удалите генерируемую аннотацию из ключевого поля.
Предназначен для нативных идентификаторов, таких как SSN или адрес электронной почты, но работает независимо от источника.
@Entity
public class Client{
@Id
@Column(name="CLNT_ID")
private long key;
@Column(name="CLNT_NUM")
private String clientNumber;
...
}