乐趣区

Hibernate-5-升级后-getProperties-错误

升级到 Hibernate 5 后,提示有错误:

  1. org.hibernate.engine.spi.SessionFactoryImplementor.getProperties()Ljava/util/Map;

完整的错误栈为:

  1. java.lang.NoSuchMethodError: org.hibernate.engine.spi.SessionFactoryImplementor.getProperties()Ljava/util/Map;
  2. at org.hibernate.cache.internal.EnabledCaching.<init>(EnabledCaching.java:77)
  3. at org.hibernate.engine.spi.CacheInitiator.initiateService(CacheInitiator.java:33)
  4. at org.hibernate.engine.spi.CacheInitiator.initiateService(CacheInitiator.java:24)
  5. at org.hibernate.service.spi.SessionFactoryServiceInitiator.initiateService(SessionFactoryServiceInitiator.java:30)
  6. at org.hibernate.service.internal.SessionFactoryServiceRegistryImpl.initiateService(SessionFactoryServiceRegistryImpl.java:68)
  7. at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263)
  8. at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:237)
  9. at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214)
  10. at org.hibernate.service.internal.SessionFactoryServiceRegistryImpl.getService(SessionFactoryServiceRegistryImpl.java:109)
  11. at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:239)
  12. at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:467)

如果你仅仅从错误信息,你可能看不出什么问题。

Google 搜索也找不到什么好的回答。经过我们对源代码的分析和排查,我们发现这是一个 JPA 版本不兼容的问题。

你的 Hibernate 可能需要更高版本的 JPA,但是你的项目中只有低版本的 JPA

有关 JPA 的支持列表可以访问页面:https://hibernate.org/orm/releases/

请查看 JPA 的版本配置列表。

根据我们的项目情况,我们需要使用 JPA 2.2,但是我们没有在 Maven 中指定 JPA 导致了上面的错误。

退出移动版