簡體   English   中英

JPA 實體監聽器比較實體

[英]JPA entity listener comparing entities

我正在嘗試比較更新前后的實體。 這個想法是檢查特定列是否已更新並處理該數據。 這是我到目前為止所擁有的:

@Entity
@EntityListeners(CarEntityListener.class)
public class Car {
   
   @Column
   private Long id;
   
   @Column
   private String status;

   @Transient
   private String loadedStatus;
}

class CarEntityListener {

   @PostLoad
   private void onLoad(Car car) {
       car.setLoadedStatus(car.getStatus());
   }

   @PostUpdate
   private void onUpdate(Car car) {
       if (!car.getLoadedStatus().equals(car.getStatus()) {
          //  Do processing here
       }
   }

}

我使用@Transient注釋來實現這一點。 但我想知道是否有更好的方法來解決這個問題,這基本上給了我以前和當前的 object 更新,如下所示:

   @PostUpdate
   private void onUpdate(Car oldCar, Car newCar) {
       if (!oldCar.getStatus().equals(newCar.getStatus()) {
          //  Do processing here
       }
   }

解決這種情況的其他方法是什么? 我將 Hibernate 與 SpringBoot 一起使用。

使用注釋@Transient是一種非常好的方法,並且沒有比這更好的方法,因為如果您在一個實體上有多個連接並且您的查詢適用於兩個實體並且對於一個實體失敗,那么整個查詢數據會在沒有任何更新的情況下恢復為原始數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM