我正在使用hibernate Hibernate-Version:3.2.5.ga.Along与此我正在使用gwt2.3版本。 现在,当我尝试升级hibernate版本时,我收到错误。我已经下载了hibernate 3.6.7最终版本并将其替换为旧的jar文件。但是当我在第一台服务器上运行应用程序时,它会给出以下错误。如果我更换新的jar与旧jar然后没有问题...但对于新jar它给出错误。 帮助我。谢谢你。
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)
答案 0 :(得分:17)
它无法访问Bean Validation Framework(BeanValidation Activator)请确保以下依赖项位于类路径或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 :(得分:10)
默认情况下,Hibernate验证器设置为auto,这意味着如果类路径中有验证器,它将尝试使用它。 GWT 2.3和更新版本包含gwt-servlet.jar中的验证api,因此Hibernate最终会得到一个parcial验证器并失败。如果您不想使用Hibernate Validation,只需在属性中将其关闭(hibernate.cfg.xml,hibernate.properties或以编程方式)。
只需将javax.persistence.validation.mode
设为none
答案 2 :(得分:5)
默认情况下,Hibernate的验证器设置为true,这意味着如果类路径中有验证器,它将尝试使用它。 GWT 2.3和更新版本包含gwt-servlet.jar中的验证api,因此Hibernate最终会得到一个parcial验证器并失败。如果您不想使用Hibernate Validation,只需在属性中将其关闭(hibernate.cfg.xml,hibernate.properties或以编程方式)。
例如:在hibernate.cfg.xml中将hibernate验证模式添加到无
<property name="javax.persistence.validation.mode">none</property>
答案 3 :(得分:1)
尝试删除hibernate-validator-4.0.2.GA.jar&amp;验证-API-1.0.0.GA.jar
答案 4 :(得分:0)
您有两个选择:
1.-您可以禁用Hibernate验证:
setProperty("javax.persistence.validation.mode", "NONE");
2.-添加这些依赖项,如果你不使用maven,那么下载jar并手动添加到你的工件:
<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>
答案 5 :(得分:0)
这里的答案对Maven很有帮助。我使用Gradle,我发现我需要做的就是添加:
compile group: 'org.hibernate', name: 'hibernate-validator', version: '4.2.0.Final'
错误消失了,我的应用程序运行正常。 我不需要排除javax验证jar或更改持久性验证模式,如其他答案所述。
答案 6 :(得分:0)
我遇到了同样的问题,但后来我添加了以下依赖项,它运行正常。
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.2.0.Final</version>
</dependency>
但请使用正确的版本。当我使用5.1.3.Final时,它仍然失败但后来我将版本更改为4.2.0.Final并且它有效。