it-swarm.com.ru

Hibernate + весенняя версия совместимости

Я хочу обновить библиотеки Spring в своем веб-приложении. Поскольку я также использую Hibernate, я хотел узнать, можно ли найти способ совместить версию Hibernate с конкретной версией Spring.

Я уже искал в Google и читал похожие посты SO, но я хочу знать, есть ли способ сравнить разные версии библиотек/фреймворков. 

Моя текущая настройка: 

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

Последняя версия Hibernate, доступная в моем хранилище: 3.5.4-FINAL и 3.5.6-FINAL для указанных выше артефактов

UPDATE Я получаю эту ошибку после обновления Hibernate до 3.5.4 с 3.2 с Spring 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)
13
Rakesh

Вы можете проверить это в spring-orm Maven POM.

Например, чтобы проверить версию Hibernate, используемую в Spring 3.2.3.RELEASE, вы можете выполнить следующую команду 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.

Конечно, вы можете попробовать использовать Spring с другой версией Hibernate, но версии из POM с меньшей вероятностью могут вызвать некоторые проблемы.

24
Henryk Konsek

Если вы не можете выполнить команду grep в Windows, перейдите в папку с файлом .m2\repository\org\springframework\spring-orm\4.2.5.RELEASE\spring-orm-4.2.5.RELEASE.pom. Откройте pom-файл в редакторе и выполните поиск по слову «hibernate», чтобы найти зависимости для вашей весенней версии. [Команда grep также использует тот же подход]

4
Burusothman

В вашем Eclipse IDE это можно выяснить довольно легко. Откройте pom.xml в редакторе по умолчанию в IDE. Теперь перейдите к определенной зависимости, где определен spring-orm. Если вы наведите курсор на определение и выполните CTRL + LEFT_MOUSE_CLICK это откроет Spring-Orm Pom XML. Здесь вы можете найти версию зависимости, используемую для hibernate-entitymanager. Смотрите эту анимацию:

enter image description here

0
Saikat