Прослушиватели событий - прослушиватель уровня столбца сущности - PullRequest
0 голосов
/ 28 февраля 2019

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

Пример:

Таблица

@Entity
public class Book {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id", updatable = false, nullable = false)
    private Long id;

    @Column
    private LocalDate publishingDate;

    @Column
    private Double price;

}

В приведенной выше таблице я просто хочу знать, были ли внесены какие-либо изменения в цену книги, скореекроме того, что слушатель получает уведомления о любых обновлениях объекта каждый раз.

Спасибо

1 Ответ

0 голосов
/ 28 февраля 2019

Для отслеживания изменений поля вам необходимо запомнить старое значение и сравнить его с новым значением.Введите новое поле @Transient Double previousPrice.Включите его в метод обратного вызова @PostLoad со значением price.Вы можете проверить, было ли оно изменено, сравнив price и previousPrice в

  1. @PreUpdate методе (внутри сущности)
  2. при вызове метода setPrice (внутри сущности))
  3. в любое время удобным способом book.isPriceChanged(){ return price!=null && price.equals(previousPrice);} (внешняя сущность)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...