Spring Boot 如何解决Sping Boot 3和Hibernate搜索的依赖冲突

rqmkfv5c  于 2023-04-20  发布在  Spring
关注(0)|答案(1)|浏览(202)

我的数据模块中有以下依赖项:

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <dependency>
        <groupId>org.hibernate.search</groupId>
        <artifactId>hibernate-search-mapper-orm-jakarta</artifactId>
        <version>6.1.7.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate.search</groupId>
        <artifactId>hibernate-search-backend-lucene</artifactId>
        <version>6.1.7.Final</version>
    </dependency>

+ org.hibernate.search:hibernate-search-mapper-orm-jakarta:6.1.7.Final
└── org.hibernate.common:hibernate-commons-annotations:5.1.2.Final
  + org.hibernate:hibernate-core-jakarta:5.6.11.Final
  └── org.hibernate.common:hibernate-commons-annotations:5.1.2.Final
  + org.hibernate.search:hibernate-search-mapper-pojo-base:6.1.7.Final
  └── org.hibernate.common:hibernate-commons-annotations:5.1.2.Final

+ org.springframework.boot:spring-boot-starter-data-jpa:3.0.5
└── + org.hibernate.orm:hibernate-core:6.1.7.Final
    └── org.hibernate.common:hibernate-commons-annotations:6.0.6.Final

冲突发生在hibernate-search-mapper-orm-jakarta的hibernate-commons-annotations:5.1.2.Final和spring-boota-starter-data-jpa依赖项的hibernate-commons-annotations:6.0.6.Final之间。
我想使用hibernate search(带jakarta persistence)和spring Boot 3.0.5。我如何才能实现这一点。我可以告诉spring使用其他版本的hibernate core吗?
感谢和最好的问候马特

xytpbqjk

xytpbqjk1#

您有两种选择,将hibernate-commons-annotations提升到6.0.6.Final或将hibernate-commons-annotations删除到5.1.2.Final。
要将org.hibernate.search:hibernate-commons-annotations提升到6.0.6.Final,只需将其从org.hibernate.search:hibernate-search-mapper-orm-jakarta:6.1.7.Final中排除即可。然后hibernate-search-mapper-orm-jakarta将通过hibernate-core:6.1.7.Final使用spring-boot-starter-data-jpa:3.0.5提供的类

<dependency>
        <groupId>org.hibernate.search</groupId>
        <artifactId>hibernate-search-mapper-orm-jakarta</artifactId>
        <version>6.1.7.Final</version>
        <exclusions>
            <exclusion>
                <groupId>org.hibernate.common</groupId>
                <artifactId>hibernate-commons-annotations</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

要从org.springframework. Boot :spring-boot-starter-data-jpa:3.0.5 dependency(正在加载org.hibernate.orm:hibernate-core:6.1.7 & hibernate-commons-annotations:6.0.6.Final)产生的6.0.6.Final中删除hibernate-commons-annotations到5.1.2.Final,请添加以下pom dependency:

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.hibernate.orm</groupId>
                <artifactId>hibernate-core</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

第二种方法可能存在的问题是,你会丢失中间的org.hibernate.orm:hibernate-core。这取决于你的代码做了什么。如果需要,你可以通过添加以下pom依赖项来修复:

<dependency>
        <groupId>org.hibernate.orm</groupId>
        <artifactId>hibernate-core</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.hibernate.common</groupId>
                <artifactId>hibernate-commons-annotations</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

相关问题