2013-08-02 52 views
11

H,我想升级我的web应用程序中的Spring库。因为我也使用Hibernate,所以我想知道是否有一种方法可以找到哪个版本的Hibernate与Spring的特定版本兼容。Hibernate +弹簧版本兼容性

我已经搜索谷歌和阅读类似的帖子SO,但我想知道是否有一种方法来比较不同版本的库/框架。

我的当前设置:

Spring V2.5 
Hibernate : org.hibernate.hibernate 3.2.6.ga 
      org.hibernate.hibernate-annotations 3.3.1.ga 

可用的最新版本的Hibernate在我的仓库是上述文物

UPDATE 我收到此错误3.5.4-FINAL3.5.6-FINAL升级后休眠到3.5 .4从3.2开始2.5(不变)

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor#0' 
defined in class path resource [applicationContext-hibernate.xml]: Initialization of bean failed; 
nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' 
defined in class path resource [applicationContext-hibernate.xml]: Invocation of init method failed; nested exception is java.lang.IncompatibleClassChangeError: 
Implementing class 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:480) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) 
     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) 
     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:221) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) 
     at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:881) 
     at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:597) 
     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:366) 
     at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255) 
     at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199) 
     at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45) 
     at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4206) 
     at org.apache.catalina.core.StandardContext.start(StandardContext.java:4705) 
     at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799) 
     at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779) 
     at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601) 
     at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1079) 
     at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1002) 
     at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:506) 
     at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317) 
     at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324) 
     at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142) 
     at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065) 
     at org.apache.catalina.core.StandardHost.start(StandardHost.java:840) 
     at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057) 
     at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463) 
     at org.apache.catalina.core.StandardService.start(StandardService.java:525) 
     at org.apache.catalina.core.StandardServer.start(StandardServer.java:754) 
     at org.apache.catalina.startup.Catalina.start(Catalina.java:595) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
     at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 

回答

18

您可以在spring-orm Maven POM中查看。

例如检查由Spring 3.2.3.RELEASE使用Hibernate的版本,您可以发出以下shell命令:

grep -A 1 hibernate- ~/.m2/repository/org/springframework/spring-orm/3.2.3.RELEASE/spring-orm-3.2.3.RELEASE.pom 

上面的命令会导致以下的输出:

 <artifactId>hibernate-annotations</artifactId> 
     <version>3.4.0.GA</version> 
-- 
     <artifactId>hibernate-core</artifactId> 
     <version>4.1.9.Final</version> 
-- 
     <artifactId>hibernate-core</artifactId> 
     <version>3.3.2.GA</version> 
-- 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>4.1.9.Final</version> 
-- 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>3.4.0.GA</version> 

从上面的输出我们可以推断出Spring 3.2.3.RELEASE支持Hibernate 4.1.9.Final和3.3.2.GA。

当然,您可以尝试在不同版本的Hibernate中使用Spring,但POM的版本不太可能会给您带来一些问题。

0

我想他们是兼容的所有版本,向后兼容性从来都不是问题。您可能需要更改一些配置。将春季版本更改为新版本似乎没有问题,否则可能会导致一些问题。

+2

不,不幸的是这并不准确。我只是将hibernate(解决JPA 2.0与JPA 2.1问题)降级到版本4.2.18.Final,现在hibernate-spring集成由于缺少春季尝试加载的服务而中断(Spring版本在4.1.1处未触及)。发布)。所以有一些版本的敏感性,一切都不适用。 – demaniak

+0

向后兼容性对于各种Java框架来说是一个非常普遍的问题,包括spring-orm vs hibernate。 –

2

如果您无法在Windows中执行grep命令..导航到您的.m2\repository\org\springframework\spring-orm\4.2.5.RELEASE\spring-orm-4.2.5.RELEASE.pom文件位置。在编辑器中打开pom文件并搜索单词“hibernate”,您可以找到您的spring版本的依赖关系。 [grep命令也使用相同的方法]