初始化ApplicationContext时出现异常HibernateException:应用BeanValidation关系约束时出错

时间:2015-11-18 13:12:53

标签: java spring hibernate bean-validation spring-bean

我之前创建的Question我可以暂时解决问题:

添加:hibernate.properties: NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:url parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { [formData appendPartWithFileData:data name:@"media" fileName:[NSString stringWithFormat:@"%@.%@",[self randomStringWithLength:15],extension] mimeType:@"image/jpeg"]; } error:nil]; AppDelegate *appDelegate = [[UIApplication sharedApplication]delegate]; AFURLSessionManager *manager = appDelegate.urlSessionManager; NSProgress *progress = nil; NSURLSessionUploadTask *uploadTask = [manager uploadTaskWithStreamedRequest:request progress:&progress completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) { if (error) { NSLog(@"Error: %@", error); } else { } }]; //6.Send request [uploadTask resume];

我无法理解它暂时出现的确切原因我可以修复:添加:hibernate.properties:javax.persistence.validation.mode=none 属性。但它不能是最终选项,因为Application需要获得验证bean。

请您帮助我理解为什么在此项目工作正常之前它会发出此错误:

如果我没有在javax.persistence.validation.mode=none中添加javax.persistence.validation.mode=none属性,我会收到相同的错误。

请帮助我理解并解决此问题。

我的完整堆栈跟踪如下:

hibernate.properties

2 个答案:

答案 0 :(得分:0)

我不太确定我完全理解你的问题,但如果问题是当你引导你的应用程序时你得到了上面的堆栈跟踪,并且当你设置javax.persistence.validation.mode=none时它就消失了,那么答案如下。< / p>

设置验证模式会告诉ORM,或者更具体地说BeanValidationIntegrator根本不启用Bean验证。这是根据JPA规范,其中指定了JPA和Bean Validation之间的行为。

在任何其他模式下,BeanValidationIntegrator将尝试启用Bean验证。它检查javax.validation.Validation是否在类路径上,将此作为引导Bean验证的关键。但是,它还要求有一个Bean Validation实现,例如Hibernate Validator。

您的stacktrace意味着您在类路径上有Bean Validation API,但没有Bean Validation Provider(实现)。

您的依赖项如何?

答案 1 :(得分:0)

在我的应用程序中,我们正在使用hibernate 4并在将 hibernate-validator-4.1.0.Final.jar 添加到classpath之后我没有得到这个例外,即使我在hibernate中没有这个属性.properties:javax.persistence.validation.mode=none

我可以通过在应用程序类路径中添加 hibernate-validator-4.1.0.Final.jar 来解决这个问题。