Обновление сущности после триггера базы данных - PullRequest
0 голосов
/ 05 апреля 2019

Я хочу обновить некоторые поля объекта, а затем вернуть обновленный объект.В соответствующей таблице есть триггер обновления, который устанавливает текущую временную метку в столбце (я хотел бы сделать это на уровне базы данных, а не через JPA).

Сначала я использую метод find () для управления данными entitymanager, чтобы получитьсуществующий объект через его идентификатор, а затем обновите некоторые поля, используя установщики объекта.Однако, когда я возвращаю сущность, столбец / поле обновления моей сущности Java не обновлялся, даже если он обновлялся в таблице базы данных с помощью триггера обновления.

Я пробовал метод refresh () entitymanagerпосле установки измененных значений, но кажется, что это аннулирует все мои изменения (возможно, так как объект еще не был зафиксирован?).

1) Есть ли лучший способ получить правильные значения, кроме разрешениятранзакция фиксирует, а затем снова извлекает сущность, используя find ()?

2) Я не совсем уверен, как аннотировать столбец «последнее изменение» в моей сущности.Каков наилучший способ аннотировать поле, которое изменяется только триггером базы данных?Прямо сейчас я использую (так как я хочу, чтобы триггер базы данных обновлял это поле):

@Column(name = "last_changed", nullable = false, insertable = false, updatable = false)

Есть ли у кого-нибудь полезные сведения по этому поводу?Любая помощь приветствуется, спасибо!

1 Ответ

0 голосов
/ 08 апреля 2019

1) Есть ли лучший способ получить правильные значения, кроме разрешения транзакции и последующего извлечения сущности с помощью find ()?

Как прокомментировал @JBNizet: "Поэтому вам нужно вызвать flush (), а затем refresh (). "

2) Я не совсем уверен, как аннотировать столбец" последнее изменение "в моей сущности.Каков наилучший способ аннотировать поле, которое изменяется только триггером базы данных?

В дополнение к аннотации @Column с возможностью вставки и обновления можно установить значение false, можно использовать аннотацию спящего режима @Генерируется как показано в этом ответе здесь. Это, однако, нарушает любой подход «только для JPA».

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