我迁移到 Hibernate 6.4.1(通过 Spring Boot 3.2.1),我的应用程序记录了一个以前不存在的错误:
2024-01-03T15:49:10.361+01:00 ERROR 81857 --- [ main]
o.h.metamodel.internal.MetadataContext :
HHH015007: Illegal argument on static metamodel field injection :
org.hibernate.envers.DefaultRevisionEntity_#class_; expected type :
org.hibernate.metamodel.model.domain.internal.EntityTypeImpl; encountered type :
jakarta.persistence.metamodel.MappedSuperclassType
我可以通过一个最小的示例来重现这一点,基本上是从 spring data envers 文档中复制代码: https://docs.spring.io/spring-data/jpa/reference/envers/configuration.html
我还可以通过运行 spring-data-envers 示例来重现这一点: https://github.com/spring-projects/spring-data-examples/blob/main/jpa/envers/pom.xml
我也可以通过运行来重现此问题 https://github.com/hibernate/hibernate-orm/blob/main/hibernate-envers/src/test/java/org/hibernate/orm/test/envers/DefaultAuditTest.java
创建问题 https://hibernate.atlassian.net/jira/software/c/projects/HHH/boards/31?selectedIssue=HHH-17612
在我的例子中,使用 hibernate envers 的
@Audited
注释导致了错误。我通过删除依赖项 implementation "org.hibernate:hibernate-envers"
并添加 implementation "org.hibernate:hibernate-envers-jakarta:5.6.15.Final"
解决了该错误。
我也有同样的问题,一开始我很生气,但是仔细看看代码,这似乎曾经是一个硬失败,但现在它只记录为错误——一旦我意识到这一点,我我有点祈祷并希望一切都能顺利。虽然如果错误消失肯定会让我感觉更好,但到目前为止它还没有影响我的代码的行为。