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 2 中缺少 TomcatEmbeddedServletContainerFactory
Spring Boot Starter Cache - 缺少速度?
Spring Boot gradle flyway - 验证错误 - 模式验证:缺少表