spring-orm 3.2 需要不同的 JtaPlatform 包,而不是 hibernate-core 4.3
Posted
技术标签:
【中文标题】spring-orm 3.2 需要不同的 JtaPlatform 包,而不是 hibernate-core 4.3【英文标题】:spring-orm 3.2 require different JtaPlatform package, instead of hibernate-core 4.3 【发布时间】:2014-01-06 08:41:45 【问题描述】:我依赖于 spring-orm 3.2 和 hibernate-core 4.3。
我的春季休眠配置:
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="packagesToScan" value="my.domain.package"/>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.mysql5InnoDBDialect</prop>
</props>
</property>
</bean>
在运行时我有异常
引起:java.lang.ClassNotFoundException: org.hibernate.service.jta.platform.spi.JtaPlatform
在 SpringSessionContext 类中。在我的库中,我在另一个休眠包中看到了 JtaPlatform:
org.hibernate.engine.transaction.jta.platform.spi.JtaPlatform
(engine.transaction而不是包中的服务)
我做错了什么?
不要在 4.2.8 中复制(JPA 2.0 而不是 JPA 2.1),但我不明白,为什么它们在次要版本中破坏了可比性
【问题讨论】:
这个链接可能对***.com/questions/20946044/…有帮助 【参考方案1】:尝试更改您正在使用的hibernate-core
工件的版本。自 4.3.0.Beta1 以来,JtaPlatform
已移至另一个包。尝试使用4.2.8.Final,它在适当的包中包含JtaPlatform
。
【讨论】:
它的作品,但我不明白,为什么他们破坏了可比性以及如何恢复它 嗯,4.3.0 现在只是候选版本,所以 spring 可能会在发布时更新依赖项。至于为什么这样做很难说,我找不到任何有关此的信息。可能只是重构以拥有更清洁的 API。同样,我确信 spirng 会在发布时更新到 4.3.0,现在只要坚持使用稳定版本即可。 另一方面,升级 Spring 是另一种解决方案。【参考方案2】:从 Hibernate 4.3.x 开始,JtaPlatform 类被重构为一个新的包。要修复它,您需要将您的 spring 版本升级到 4.1.x 最新版本。下面我提供 pom.xml 的代码,我已经为自己的应用程序测试过.
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.7.Final</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.1.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>4.1.2.RELEASE</version>
</dependency>
【讨论】:
以上是关于spring-orm 3.2 需要不同的 JtaPlatform 包,而不是 hibernate-core 4.3的主要内容,如果未能解决你的问题,请参考以下文章