поймать последовательность оракула и установить его в другое поле в JPA - PullRequest
0 голосов
/ 18 февраля 2011

Компонент enity сгенерировал идентификатор последовательности (первичный ключ оракула). Нам нужно как-то перехватить эту последовательность на persist и установить ее в другое поле. Например:

class Entity {
    @Id long id;
    @Column long parentId;
}

Идея состоит в том, чтобы сделать parentId таким же, как и идентификатор, сгенерированный oracle, если он пуст. Например:

@PrePersist
void prePersist() {
    if (parentId = 0) parentId = id; // but id is not yet generated
}

В настоящее время мы используем триггер БД для достижения этой цели, но можно ли это сделать в JPA (желательно без специальных классов гибернации)?

1 Ответ

1 голос
/ 18 февраля 2011

Когда мы сохраняем значение entity в JPA, наш entity объект становится управляемым, и в этот момент должно быть заполнено id. Как и в случае с pre-persist, а не post-persist, ваш идентификатор не будет заполнен.

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