【发布时间】:2014-11-28 14:41:38
【问题描述】:
这是我在这里的第一个问题,所以请多多包涵:)
我正在尝试实施一个框架,通过使用 bean 验证来评估系统的数据质量。我的系统使用 JBoss 7.1.1 和 Hibernate 5.1.3。作为第一步,我想输出一些简单的验证统计信息,例如每种约束类型的违规百分比。为此,我想首先获取我在每个实体中声明的所有约束注释(目前我只有类级别和字段约束)。我想我已经找到了一种方法,方法是将我的 ConstraintDescriptors 强制转换为 ConstraintDescriptorImpl,然后在其上调用 getAnnotationType() 方法(可能有一种更优雅的方法来做我想做的事情,但这可能属于另一个问题)。这一切都编译得很好,但在运行时我得到以下异常:
java.lang.ClassCastException: org.hibernate.validator.metadata.ConstraintDescriptorImpl cannot be cast to org.hibernate.validator.internal.metadata.descriptor.ConstraintDescriptorImpl
这里发生了什么? ConstraintDescriptorImpl 在 hibernate-validator-5.1.3 JAR 中的位置是 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 验证器问题。无论如何,我不知道如何解决甚至调试问题 - 任何帮助将不胜感激!
谢谢:)
【问题讨论】:
标签: java jboss bean-validation classcastexception