我是事件侦听器的新手,我想知道是否有任何解决方案可以只跟踪列级值的变化,而不是编写一个事件侦听器来查看它是否是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;
}
在上面的表格中,我只想知道图书的价格是否发生了任何变化,而不是每次都会通知监听器实体的任何更新。
谢谢
发布于 2019-03-01 04:08:25
要跟踪字段的更改,您需要记住旧值并将其与新值进行比较。引入新的字段@Transient Double previousPrice
。在带有price
值的@PostLoad
回调方法中初始化它。您可以通过比较中的price
和previousPrice
来检查它是否已更改
@PreUpdate
方法(实体内部)调用setPrice
方法时的book.isPriceChanged(){ return price!=null && price.equals(previousPrice);}
(实体外部)https://stackoverflow.com/questions/54930491
复制相似问题