【问题标题】:Event Listeners - Entity Column level Listener事件监听器 - 实体列级监听器
【发布时间】:2019-02-28 16:45:12
【问题描述】:

我是事件侦听器的新手,想知道是否有任何解决方案可以仅跟踪列级别值的变化,而不是编写事件侦听器来查看它是否是 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;

}

在上表中,我只想知道是否对图书价格进行了任何更改,而不是每次都通知侦听器有关实体的任何更新。

谢谢

【问题讨论】:

    标签: java hibernate jpa entity event-listener


    【解决方案1】:

    要跟踪字段的更改,您需要记住旧值并将其与新值进行比较。引入新字段@Transient Double previousPrice。在 @PostLoad 回调方法中使用 price 值初始化它。您可以通过比较 pricepreviousPrice 来检查它是否已更改

    1. @PreUpdate 方法(实体内部)
    2. 调用setPrice方法时(实体内部)
    3. 随时用方便的方法book.isPriceChanged(){ return price!=null && price.equals(previousPrice);}(外部实体)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-14
      • 2014-02-21
      • 2016-07-09
      • 1970-01-01
      • 2020-07-25
      • 1970-01-01
      • 1970-01-01
      • 2020-06-21
      相关资源
      最近更新 更多