2011-10-05 17 views
11

Tôi đang sử dụng Hibernate Hibernate-Version: 3.2.5.ga.Một thời gian dài với điều này tôi đang sử dụng phiên bản gwt2.3. Bây giờ khi tôi đã cố gắng để nâng cấp phiên bản hibernate, tôi nhận được lỗi.Tôi đã tải về phiên bản cuối cùng hibernate 3.6.7 và thay thế nó cũ jar tập tin in.but khi tôi chạy ứng dụng trên máy chủ đầu tiên nhấn nó được đưa ra dưới đây error.If tôi thay thế lọ mới với cái lọ cũ thì không có vấn đề gì cả ... nhưng đối với cái lọ mới thì nó sẽ gây ra lỗi. giúp tôi. Cảm ơn trước.HibernateException: Không thể lấy nhà máy Bean Validation mặc định

org.hibernate.HibernateException: Unable to get the default Bean Validation factory 
at org.hibernate.cfg.beanvalidation.BeanValidationActivator.applyDDL(BeanValidationActivator.java:127) 
at org.hibernate.cfg.Configuration.applyBeanValidationConstraintsOnDDL(Configuration.java:1704) 
at org.hibernate.cfg.Configuration.applyConstraintsToDDL(Configuration.java:1654) 
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1445) 
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1856) 
at com.nextenders.facadeimplementation.hibernate.util.HibernateFactory.configureSessionFactory(HibernateFactory.java:107) 
at com.nextenders.facadeimplementation.hibernate.util.HibernateFactory.buildIfNeeded(HibernateFactory.java:42) 
at com.nextenders.facadeimplementation.model.dao.AbstractDao.<init>(AbstractDao.java:20) 
at com.nextenders.facadeimplementation.model.dao.UserDetailsDao.<init>(UserDetailsDao.java:24) 
at com.nextenders.facadeimplementation.facade.UserFacade.doLogin(UserFacade.java:753) 
at com.nextenders.facadeimplementation.facade.UserFacade.workflowMethodCaller(UserFacade.java:822) 
at com.nextenders.server.guice.actions.handlers.LoginCallerActionHandler.execute(LoginCallerActionHandler.java:61) 
at com.nextenders.server.guice.actions.handlers.LoginCallerActionHandler.execute(LoginCallerActionHandler.java:1) 
at com.gwtplatform.dispatch.server.AbstractDispatchImpl.doExecute(AbstractDispatchImpl.java:153) 
at com.gwtplatform.dispatch.server.AbstractDispatchImpl.execute(AbstractDispatchImpl.java:111) 
at com.gwtplatform.dispatch.server.AbstractDispatchServiceImpl.execute(AbstractDispatchServiceImpl.java:80) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:601) 
at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:569) 
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:208) 
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248) 
at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263) 
at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:178) 
at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91) 
at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:62) 
at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118) 
at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088) 
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360) 
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) 
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729) 
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) 
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49) 
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
at org.mortbay.jetty.Server.handle(Server.java:324) 
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) 
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843) 
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647) 
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) 
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) 
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) 
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488) 

Trả lời

16

Nó không thể acceess Bean Validation Framework (BeanValidationActivator) Hãy chắc chắn rằng sự phụ thuộc sau nằm trong đường dẫn lớp hoặc trong pom.xml

<dependency> 
     <groupId>javax.validation</groupId> 
     <artifactId>validation-api</artifactId> 
     <version>1.0.0.GA</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-validator</artifactId> 
     <version>4.2.0</version> 
    </dependency> 
1

Hãy thử loại bỏ cả ngủ đông-validator-4.0 .2.GA.jar & validation-api-1.0.0.GA.jar

9

Theo mặc định Trình xác nhận Hibernate được đặt thành tự động, có nghĩa là nếu có trình xác thực trong đường dẫn lớp, nó sẽ cố gắng sử dụng nó. GWT 2.3 và các phiên bản mới hơn bao gồm api xác thực bên trong gwt-servlet.jar, vì vậy Hibernate kết thúc bằng một trình xác nhận parcial và không thành công. Nếu bạn không muốn sử dụng Hibernate Validation, hãy tắt nó đi trong các thuộc tính của bạn (hibernate.cfg.xml, hibernate.properties hoặc programatically).

Đơn giản chỉ cần thiết lập javax.persistence.validation.mode-none

4

By validator mặc định Hibernate được thiết lập là true, có nghĩa là nếu có một validator trong classpath nó sẽ cố gắng sử dụng nó. GWT 2.3 và các phiên bản mới hơn bao gồm api xác thực bên trong gwt-servlet.jar, vì vậy Hibernate kết thúc bằng một trình xác nhận parcial và không thành công. Nếu bạn không muốn sử dụng Hibernate Validation, hãy tắt nó đi trong các thuộc tính của bạn (hibernate.cfg.xml, hibernate.properties hoặc programatically).

ví dụ: trong hibernate.cfg.xml thêm chế độ xác nhận hibernate để none

<property name="javax.persistence.validation.mode">none</property> 
0

Bạn có 2 lựa chọn:

1. Bạn có thể vô hiệu hóa các Validation Hibernate:

setProperty("javax.persistence.validation.mode", "NONE"); 

2.- Thêm các phụ thuộc này, nếu bạn không sử dụng maven, hãy tải xuống các lọ và thêm vào tạo tác của bạn theo cách thủ công:

<dependency> 
     <groupId>javax.el</groupId> 
     <artifactId>javax.el-api</artifactId> 
     <version>2.2.4</version> 
     <scope>provided</scope> <!-- No required in JBoss but for test --> 
    </dependency> 
    <dependency> 
     <groupId>org.glassfish.web</groupId> 
     <artifactId>javax.el</artifactId> 
     <version>2.2.4</version> 
     <scope>provided</scope> <!-- No required in JBoss but for test --> 
    </dependency> 
0

Câu trả lời ở đây hữu ích cho Maven. Tôi đang sử dụng Gradle và tôi thấy rằng tất cả những gì tôi cần làm là thêm:

compile group: 'org.hibernate', name: 'hibernate-validator', version: '4.2.0.Final' 

Và lỗi đã biến mất và ứng dụng của tôi hoạt động bình thường. Tôi không cần phải loại trừ bình xác nhận javax hoặc thay đổi chế độ xác thực kiên trì như các câu trả lời khác được đề cập.

0

Tôi đã gặp vấn đề tương tự nhưng sau đó tôi đã thêm phụ thuộc bên dưới và nó hoạt động tốt.

 <dependency> 
       <groupId>org.hibernate</groupId> 
       <artifactId>hibernate-validator</artifactId> 
       <version>4.2.0.Final</version> 
     </dependency> 

Nhưng sử dụng đúng phiên bản. Khi tôi sử dụng 5.1.3.Final, nó giữ trên thất bại nhưng sau đó tôi thay đổi phiên bản 4.2.0.Final và nó làm việc.

Các vấn đề liên quan