Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Spring boot时的两个Hibernate版本_Hibernate_Spring Boot_Gradle_Dependency Management - Fatal编程技术网

使用Spring boot时的两个Hibernate版本

使用Spring boot时的两个Hibernate版本,hibernate,spring-boot,gradle,dependency-management,Hibernate,Spring Boot,Gradle,Dependency Management,我在build.gradle文件中明确指定了最新的Hibernate版本。在运行构建后,我发现依赖项库列表中显示了两个不同版本的Hibernate jar文件。SpringBoot推出了一个更低的版本,甚至我想使用5.4.2.Final。我应该使用Spring boot引入的版本,还是有办法用更新的版本覆盖它 我做了一些研究,但没有找到我想要的答案。请参阅:您可以将hibernate库从Springboot可传递依赖项中排除,以便强制Gradle使用您的版本。 首先,您需要分析哪个Springb

我在build.gradle文件中明确指定了最新的Hibernate版本。在运行构建后,我发现依赖项库列表中显示了两个不同版本的Hibernate jar文件。SpringBoot推出了一个更低的版本,甚至我想使用5.4.2.Final。我应该使用Spring boot引入的版本,还是有办法用更新的版本覆盖它

我做了一些研究,但没有找到我想要的答案。

请参阅:您可以将
hibernate
库从Springboot可传递依赖项中排除,以便强制Gradle使用您的版本。 首先,您需要分析哪个Springboot依赖关系依赖于
hibernate core
(通常是
“org.springframework.boot:spring boot starter data jpa”
):为此,您可以使用gradle
依赖关系
任务浏览依赖关系图

然后,您可以排除特定的可传递依赖项,如文档中所述:

dependencies{

    implementation ("org.springframework.boot:spring-boot-starter-data-jpa") {
        exclude group: "org.hibernate", module: "hibernate-core"
    }
    implementation "org.hibernate:hibernate-core:5.4.2.Final"
    ...
}
请注意升级
hibernate核心
版本可能会对Spring Jpa相关库的行为产生副作用(请确保您使用的Springboot版本与此新版本的
hibernate
兼容)


编辑:还有其他方法可以定义可传递依赖项约束,请参考官方文档(例如:)

您是否更新了hibernate.version属性?您的问题有道理。我在一个父项目下有多个项目,我没有在一个子项目中指定hibernate。因此,hibernate版本隐式地取自Spring boot。当然,主要问题通过下面列出的答案解决了。