簡體   English   中英

使用Hibernate Bean驗證時發生ClassCastException

[英]ClassCastException while using Hibernate Bean Validation

這是我在這里的第一個問題,所以請忍受:)

我正在嘗試實現一個框架,用於通過使用bean驗證來評估系統的數據質量。 我的系統使用JBoss 7.1.1和Hibernate 5.1.3。 第一步,我想輸出一些簡單的驗證統計信息,例如每種約束類型的違規百分比。 為此,我想首先獲取我在每個實體中聲明的所有約束注釋(當前,我僅具有類級別和字段約束)。 我以為我找到了一種方法,將我的ConstraintDescriptor強制轉換為ConstraintDescriptorImpl,然后在該方法上調用getAnnotationType()方法(可能有一種更優雅的方法來執行我想要的操作,但這可能屬於另一個問題)。 所有這些都可以正常編譯,但是在運行時出現以下異常:

java.lang.ClassCastException: org.hibernate.validator.metadata.ConstraintDescriptorImpl cannot be cast to org.hibernate.validator.internal.metadata.descriptor.ConstraintDescriptorImpl

這里發生了什么? 我在導入中使用的hibernate-validator-5.1.3 JAR中ConstraintDescriptorImpl的位置是org.hibernate.validator.internal.metadata.descriptor.ConstraintDescriptorImpl。 經過一番谷歌搜索后,我發現org.hibernate.validator.metadata.ConstraintDescriptorImpl是該類在hibernate-validator-4.x中的位置。 實際上,我嘗試在路徑上添加hibernate-validator-4.1.0 JAR,並且整個過程都很順利。 但這似乎並不能回答我的問題(我想使用5.1.3版本)。

由於我沒有在項目的其他任何地方使用hibernate-validator-4.x,因此我懷疑也許應該歸咎於JBoss在其模塊中包含hibernate-validator-4.2。 但是話又說回來,這可能是Hibernate驗證程序的問題。 無論如何,我都不知道如何解決甚至調試問題,我們將不勝感激!

謝謝 :)

您假設是正確的,JBoss AS 7確實在其模塊目錄中捆綁了Hibernate Validator 4。 Hibernate Validator 4.2.0.Final是精確的,它位於modules / org / hibernate / validator / main中 AS 7使用Hibernate Validator來滿足EE 6規范的Bean驗證要求(Hibernate Validator 4是Bean Valdiation 1.0的參考實現)。

如果要將不同版本的Validator與AS 7應用程序捆綁在一起,則需要使用jboss-deployment-structure.xml排除驗證模塊。 另請參閱https://docs.jboss.org/author/display/AS7/Class+Loading+in+AS7

暫無
暫無

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

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