Spring Boot 2.1 缺少多个 org.hibernate.jpa.event 类

Posted

技术标签:

【中文标题】Spring Boot 2.1 缺少多个 org.hibernate.jpa.event 类【英文标题】:Spring Boot 2.1 missing multiple org.hibernate.jpa.event classes 【发布时间】:2018-11-05 14:20:12 【问题描述】:

我刚刚尝试将我的一个项目从 Spring Boot 2.0.6 升级到 2.1,现在我的 JPA 注释集成器类中缺少一些包,即:

import org.hibernate.jpa.event.internal.core.JpaPostDeleteEventListener;
import org.hibernate.jpa.event.internal.core.JpaPostInsertEventListener;
import org.hibernate.jpa.event.internal.core.JpaPostLoadEventListener;
import org.hibernate.jpa.event.internal.core.JpaPostUpdateEventListener;
import org.hibernate.jpa.event.internal.jpa.CallbackBuilderLegacyImpl;
import org.hibernate.jpa.event.internal.jpa.CallbackRegistryImpl;
import org.hibernate.jpa.event.spi.jpa.CallbackBuilder;
import org.hibernate.jpa.event.spi.jpa.ListenerFactory;
import org.hibernate.jpa.event.spi.jpa.ListenerFactoryBuilder;

这些不再可用,还是现在只需要从单独的依赖项中提取?

编辑

看起来实体管理器模块已合并到 Hibernate 的核心模块中,但这些类不再存在(我确实使用了该依赖项,并且某些事件包结构仍然存在)。我想我可能别无选择留在 2.0.6 ...

顺便说一句,Val Blant 在这篇文章中的解决方案是有问题的课程:

Hibernate @PostLoad never gets invoked

谢谢!

【问题讨论】:

不确定使用来自第三方 internal 包的类是否是个好主意。 我在想也许 Spring 项目删除了这个特定的休眠依赖项/包,但只需将有问题的包添加到 POM.xml 文件中即可再次拉取它。这个类所做的只是允许我在我的实体中使用 PostLoad 之类的注释来计算加载实体时的一些瞬态值。 【参考方案1】:

好吧,通过反复试验,我发现最后一个仍然包含这些类的 hibernate-entitymanager 包是这个:

<dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>5.1.16.Final</version>
    </dependency>

我将它添加到我的 POM.xml 文件中,并且在使用 Spring-Boot 2.1 时一切正常。我只是希望这不会对其他任何事情产生任何负面影响,但到目前为止一切似乎都很好。

【讨论】:

以上是关于Spring Boot 2.1 缺少多个 org.hibernate.jpa.event 类的主要内容,如果未能解决你的问题,请参考以下文章

缺少 Spring Boot 构建器

Spring Boot 2 中缺少 TomcatEmbeddedServletContainerFactory

Spring Boot Starter Cache - 缺少速度?

Spring Boot gradle flyway - 验证错误 - 模式验证:缺少表

多个 Spring Boot 错误:包 org.springframework.boot 不存在

Spring Boot 2.1 中的 DataSource bean 覆盖