从版本 4.3.11.Final 切换到 5.0.1.Final 导致编译错误

Switching from version 4.3.11.Final to 5.0.1.Final causes compilation error

我正在尝试从

升级我的 Hibernate 版本
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>4.3.11.Final</version>
</dependency>

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.0.1.Final</version>
</dependency>

不幸的是,编译时出现以下错误。

TestDao.java:[5,25] cannot find symbol

[ERROR] symbol: class Transactional

[ERROR] location: package javax.transaction

我已经苦苦挣扎了一个多小时了。

我试过添加包 spring-tx 但没有帮助。

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-tx</artifactId>
    <version>4.2.1.RELEASE</version>
</dependency>

有人遇到过类似的问题吗?

spring-tx 给你 org.springframework.transaction.annotation.Transactional,但你的错误消息清楚地表明你正在尝试应用 javax.transaction.Transactional

Searching for javax.transaction.Transactional on Central显示候选人数; javax.transaction:javax.transaction-api:1.2javax:javaee-api:7.0 看起来都是一个合理的选择。

似乎 the POM for Hibernate 4.3 确实包括对 javax.transaction 包的 JBoss 特定版本的依赖,但它在 Hibernate 5.0 中被删除,大概是因为它已经标准化并且包括对特定包的硬依赖可能会导致运行时出现问题。