Полный плагин Hibernate работает только с Hibernate3. В любом случае с Hibernate4?
Я боролся с struts2-fullhibernatecore-plugin-2.2.2-GA для моего демонстрационного проекта CRUD для целей обучения. Ниже приводится ошибка, которую я получаю, а затем пытались заставить работать разные зависимости гибернации. Увидеть ниже
ОШИБКА
java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session;
com.googlecode.s2hibernate.struts2.plugin.util.HibernateSessionFactory.createAndTestSessionFactory(HibernateSessionFactory.java:284)
com.googlecode.s2hibernate.struts2.plugin.util.HibernateSessionFactory.rebuildSessionFactory(HibernateSessionFactory.java:227)
com.googlecode.s2hibernate.struts2.plugin.util.HibernateSessionFactory.getNewSession(HibernateSessionFactory.java:155)
Я понимаю из этой темы ответ здесь
Затем я запустил различные зависимости maven для проверки спящей версии, работающей с плагином, и нашел
НЕ РАБОТАЕТ ИЗ НИЖЕ ВЕРСИИ
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.1.6.Final</version>
</dependency>
РАБОТАЕТ ДО ЭТОЙ ВЕРСИИ
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>3.6.10.Final</version>
</dependency>
Вопрос: Очевидно, что я не хочу использовать Hibernate3, поэтому есть ли способ использовать последнюю версию hibernate4+ с struts2-fullhibernatecore-plugin-2.2.2-GA?
Вопрос: Какой наиболее широко используемый DI для спящего режима в стойках2. Должен ли я пойти на Spring или Google Сок, если выше плагин не работает?. Не вижу другого жизнеспособного решения для управления сеансом гибернации, кроме этого viewpattern, но, скажем, его antipattern и имеет много недостатков.
1 ответ
Использовать этот конфиг
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<components>
<component>
<name>hbm2ddl</name>
<implementation>jpaconfiguration</implementation>
</component>
</components>
<componentProperties>
<outputfilename>schema.ddl</outputfilename>
<create>true</create>
<export>false</export>
<format>true</format>
<drop>true</drop>
<jdk5>true</jdk5>
<propertyfile>target/test-classes/jdbc.properties</propertyfile>
<skip>${skipTests}</skip>
</componentProperties>
</configuration>
<!--<executions>-->
<!--<execution>-->
<!--<phase>process-test-resources</phase>-->
<!--<goals>-->
<!--<goal>hbm2ddl</goal>-->
<!--</goals>-->
<!--</execution>-->
<!--</executions>-->
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${hibernate.maven.plugin.version}</version>
<exclusions>
<exclusion>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
</exclusion>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.maven.plugin.version}</version>
<exclusions>
<exclusion>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
</exclusion>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.2.0.Final</version>
</dependency>
<dependency>
<groupId>${jdbc.groupId}</groupId>
<artifactId>${jdbc.artifactId}</artifactId>
<version>${jdbc.version}</version>
</dependency>
</dependencies>
</plugin>
и добавить <hibernate.maven.plugin.version>3.6.10.Final</hibernate.maven.plugin.version>
в ваши свойства пом.