[英]How to update the JPA/Hibernate @Version field in a Spring Data JPA @Modifying @Query query?
[英]How to change UPDATE behavior in Spring Data JPA/Hibernate for specific field?
我必須在實體字段的UPDATE 驗證之前添加。
有一個“狀態”枚舉字段,它有 3 個值(A、B、C)。
因此,如果實體的值為 C,則無法在 A 或 B 上更新它。
SQL 觸發器不允許。
我找到了@SQLUpdate 注釋和@Where 注釋,但找不到如何使用這些注釋。
我嘗試使用@EntityListeners,但偵聽器在已經更新的參數中具有實體 object,但無法從數據庫訪問當前值。
public class MyEntityListener {
@PreUpdate
private void validateStatusFieldForUpdate(MyEntity entity) {
if (!(entity.getStatus().equals(entity.getStatus()))
&& entity.getStatus().equals(MyEntityStatusEnum.C)) {
throw new ListenerValidationException("Entity with status='C' cannot be updated!");
}
}
}
在持久層(實體和存儲庫)之外進行這些驗證是一種很好的做法
您的案例是經典數據驗證,您可以使用 static class 中的驗證方法解決,例如,從任何服務 class 調用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.