当前位置: 首页 > 知识库问答 >
问题:

spring maven项目升级至11

柯捷
2023-03-14

我有一个maven java项目。SDK是Java8,现在我想升级到Java11。我还想将所有依赖项升级到最新的依赖项。这是一个spring项目(不是spring boot!!)

我可以解决所有不同的升级问题,但是在实体管理器工厂中设置持久性提供程序类时出错。

  @Bean(name = "entityManagerFactory")
  @DependsOn("flyway")
  public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean() throws ClassNotFoundException {
    LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
    entityManagerFactoryBean.setDataSource(dataSource());
    entityManagerFactoryBean.setPackagesToScan(environment.getRequiredProperty(PROPERTY_NAME_ENTITYMANAGER_PACKAGES_TO_SCAN));
    entityManagerFactoryBean.setPersistenceProviderClass(HibernatePersistenceProvider.class);
...
}

HibernatePeristenceProvider.class实现了jakarta.persistence.spi.PeristenceProvider

然而,setPersistenceProviderClass方法需要一个javax类。坚持不懈spi。PersistenceProvider

我有过

<org.springframework.version>5.3.19</org.springframework.version>

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-orm</artifactId>
  <version>${org.springframework.version}</version>
</dependency>
<dependency>
  <groupId>org.hibernate.orm</groupId>
  <artifactId>hibernate-core</artifactId>
  <version>6.0.0.Final</version>
</dependency>

还有一件事对我来说很奇怪。在IntelliJ中,当我打开AbstractEntityManagerFactoryBean的类时,它说字节码版本是java 8,但HibernatePeristenceProvider是java 11

共有1个答案

彭令秋
2023-03-14

根据maven存储库的信息,您的

5.3.19的spring-orm veron带有版本2.6.4spring-data-jpa,然后与hibernate-core的依赖项捆绑在一起,其中要使用的支持版本是5.6.0。最终

根据Spring留档

版本5.3.19

从Spring Framework 5.1开始,Spring需要JDK 8(Java SE 8),并为JDK 11 LTS提供现成的支持

因此,根据maven repo文档和spring文档,应该使用的版本是hibernate core5.6.0。最终版

请记住,java是向后兼容的,这意味着使用以前的JDK编译的项目在大多数情况下都可以在较新的JDK中运行,除非某些结构组件受到影响,因此您需要查看oracle迁移文档以了解您的情况。

但是对于您在这里提到的具体问题和您的担忧,我将使用提到使用hibernate核心的文档。Final,根据它,您不应该期望JDK 11出现任何问题。

 类似资料:
  • 介绍云联壹云产品如何进行升级操作。 升级介绍 本文档介绍如何从 云联壹云 2.13.x版本升级到3.2.x版本。 云联壹云 3.x版本不同于2.x版本采用传统部署方法运行CentOS系统上,而是基于Kubernetes Operator技术部署运行在Kubernetes上,并将平台服务组件等容器化部署运行在Kubernetes集群。 升级前准备 本次升级为停服升级,即控制节点和计算节点都将关闭并禁

  • 我尝试升级Apache Zeppelin以使用Flink 1.4.2。检查Flink Zeppelin解释器的源代码时,我没有发现任何从Flink版本的角度来看似乎是材料的东西,所以我只是将pom文件中的Flink verion更新为1.4.2,并从源代码运行了一个新的构建,令人惊讶地工作。运行Flink batch示例笔记本(或我自己的流媒体示例),我发现以下错误,我无法正确理解 如果能了解我们

  • 我特别关心迁移,因为在我的代码之后,用于迁移的API似乎发生了一些变化,而且我不确定如果我只是更新我的版本,我的迁移是否会中断。不幸的是,他们的网页上没有关于升级Realm版本的文档。 有没有人有升级领域的经验,特别是一个版本比两个主要版本增加?

  • 我刚开始穿春靴。我正在尝试将spring boot 1.5.10升级到2.1.11。现在我有这个错误,我不知道如何修复它 重新启动应用程序类时发生异常。 线程“main”java.lang.Reflect.InvocationTargetException在sun.reflect.nativeMethodAccessorImpl.Invoke(nativeMethodAccessorImpl.ja

  • -djava.endorsed.dirs.....不支持。通过可升级模块的概念,支持模块化形式的认可标准和独立API。 那么,我该怎么解决呢?