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的主要内容,如果未能解决你的问题,请参考以下文章

HibernateTemplate

3.2 机器学习基本算法

在 Python 3.2 中为 Matplotlib 的底图填充不同颜色的每个邮政编码

Spring 与Hibernate 整合

java深入探究12-框架整合

如何在 OpenGL 3.2+ 中渲染多个形状和对象?