[英]How to validate before saving and throw checked exception
我有以下情況:
UnacceptableStringValueException
請注意,許多服務都訪問用戶存儲庫,因此在保存之前直接實現新邏輯很麻煩。
為了在保存/更新之前執行驗證而不必為每個保存/更新調用顯式實現此操作,我試圖使用JPA偵聽器。 使用@PrePersist
和@PreUpdate
我達到了在每次保存/更新之前執行驗證的目標。 但是,此解決方案有兩個問題:
RuntimeException
。 RuntimeException
並解壓縮原始檢查的異常時,我一直在獲取org.springframework.transaction.UnexpectedRollbackException: Transaction silently rolled back because it has been marked as rollback-only
請注意,在保存/更新用戶之前執行檢查的簡單服務層將無法解決我的用例,因為有一個用戶角色存儲庫也可以保存/更新用戶( @ManyToOne(optional = false, cascade = CascadeType.PERSIST)
)
解決上面方案中描述的約束的一種好方法是什么?
我通過修復org.springframework.transaction.UnexpectedRollbackException: Transaction silently rolled back because it has been marked as rollback-only
找到了某種可行的解決方案org.springframework.transaction.UnexpectedRollbackException: Transaction silently rolled back because it has been marked as rollback-only
錯誤。
問題是,已檢查的異常導致意外的回滾,為了解決此問題,我將我的自定義已檢查的異常添加到可以像這樣@Transactional(rollbackFor = {UnacceptableStringValueException.class})
的異常: @Transactional(rollbackFor = {UnacceptableStringValueException.class})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.