我是事件侦听器的新手,想知道是否有解决方案仅跟踪列级值的变化,而不是编写事件侦听器以查看其实例是否为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;
}
在上表中,我只想知道是否对书的价格进行了任何更改,而不是每次都将实体的任何更新通知给侦听器。
谢谢
答案 0 :(得分:0)
要跟踪字段的变化,您需要记住旧值并将其与新值进行比较。引入新字段@Transient Double previousPrice
。使用@PostLoad
值在price
回调方法中将其初始化。然后,可以通过比较
price
和previousPrice
来检查它是否已更改
@PreUpdate
方法(内部实体)setPrice
方法(内部实体)时book.isPriceChanged(){ return price!=null && price.equals(previousPrice);}
(外部实体)