我試圖使用休眠@Size驗證在一對多集合這是懶惰的初始化。如果我正在創建具有在此集合中添加的子項的父實體,則驗證將應用於嘗試持久化。 但是,如果我只是找到父實體,然後做一個getChildren(),驗證根本不應用。我甚至試圖把註釋放在getter上。所以我使用@Size(max = 1),但即使孩子超過1,hibernate仍然不會拋出任何異常。即使EAGER獲取也無濟於事。 截至目前爲止,我不得不把驗證邏輯放在getter中,但顯然這不是乾淨的方法。請讓我知道是否有人遇到過這個問題,如果有任何優雅的方式做到這一點。Hibernate驗證對於代理收集
0
A
回答
1
基於事件的驗證在持續,更新和刪除時觸發。這些是JPA爲發生Bean驗證而定義的事件(有關更多詳細信息,請參閱JSR-317和JSR-338規範)。從數據庫加載實體/關聯時沒有驗證。假設是持久數據已經過驗證。如果您需要在您的方案中進行驗證,則確實需要手動進行驗證。
1
創建自己的實現的TraversableResolver
或使用DefaultTraversableResolver
和配置Hibernate驗證。
public class MyTraversableResolver implements TraversableResolver {
@Override
public boolean isReachable(
Object traversableObject,
Node traversableProperty,
Class<?> rootBeanType,
Path pathToTraversableObject,
ElementType elementType) {
return true;
}
@Override
public boolean isCascadable(
Object traversableObject,
Node traversableProperty,
Class<?> rootBeanType,
Path pathToTraversableObject,
ElementType elementType) {
return true;
}
}
+0
當你說配置Hibernate驗證器,配置它爲什麼?初始化延遲加載的集合或通過if-else有點邏輯強制實施自定義驗證? –
相關問題
- 1. Hibernate驗證程序驗證集
- 2. 關於收集常見對象的JSR303驗證
- 3. 骨幹收集驗證
- 4. 強制GC收集JNI代理對象
- 5. 驗證在Hibernate驗證
- 6. 集成的Hibernate驗證與檢票
- 7. 用於OAuth2驗證的Nginx代理
- 8. Hibernate:用於收集一對多關係的空索引列
- 9. Hibernate Criteria獲取關聯對象用於收集
- 10. 如何理解Hibernate驗證語義
- 11. 哪個Windows API用於Windows安全代理驗證對話框?
- 12. Hibernate代理上的Bean驗證失敗?預期的行爲?
- 13. 用於枚舉的Javax Hibernate驗證器
- 14. 創建基於現有的Hibernate驗證
- 15. JPA/Hibernate:基於代碼的jpa查詢驗證
- 16. 驗證對於WebApi?
- 17. 使用Hibernate驗證
- 18. SEAM與Hibernate驗證
- 19. 如何獲得對Hibernate的ValidationException驗證
- 20. 驗證groovy中的收集元素
- 21. ZF2動態收集驗證程序
- 22. 的Symfony無法驗證收集表格
- 23. 驗證收集使用JSR 303
- 24. 對講集成驗證python
- 25. Hibernate驗證器 - 驗證嵌套屬性
- 26. Hibernate的驗證沒有驗證
- 27. Hibernate- @OneToMany與凡收集
- 28. Hibernate的標準收集
- 29. 407需要代理驗證
- 30. 驗證Scrapy HTTP代理
只是要知道,是否有任何優雅的方式在懶惰的getter調用中進行驗證?像攔截器或其他配置?或者在getter本身中添加java邏輯是唯一的出路? –
我想攔截器會工作。如何看起來取決於你想使用的技術。您也可以嘗試註冊PostCollectionUpdateEventListener。你應該得到一個可以嘗試驗證的加載集合。儘管如此,我仍然對此持懷疑態度,而不會進一步理解你的用例。 – Hardy
這種情況很簡單,我希望強制孩子收集的最大尺寸限制。就像我做一個getChildren(),應該有一個驗證完成,沒有孩子被返回<=最大。現在我可以通過getter中的java邏輯來做到這一點,但我在印象@Size中會做得更優雅,但它不會像加載中提到的那樣觸發加載。 –