2016-08-05 6 views
1

Я только обновляемый с весной Ботинок 1.3.6 до 1.4.0 и я получаю следующую проблему:Spring загрузка зависимостей 1,4 QueryDSL выпуск

Типа com.querydsl.jpa.JPQLQuery не может быть решен. Это косвенно ссылается из требуемых .class файлов

Моя конфигурация pom.xml является:

<groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.4.0.RELEASE</version> 
    <relativePath/> <!-- lookup parent from repository --> 
... 

    <dependency> 
     <groupId>com.mysema.querydsl</groupId> 
     <artifactId>querydsl-jpa</artifactId> 
     <version>3.7.4</version> 
    </dependency> 

    <dependency> 
     <groupId>com.querydsl</groupId> 
     <artifactId>querydsl-sql</artifactId> 
     <version>4.1.3</version> 
    </dependency> 

Любой ключ ?.

Спасибо.

+1

есть причина, почему вы пытаетесь смешать версии QueryDSL (3.7.4 и 4.1.3)? Вы должны использовать 4.x по доске –

+0

Это две разные группы com.mysema.querydsl и com.querydsl и используются в двух разных модулях. Но ошибка все равно происходит даже при удалении com.querydsl (4.1.3) из моего проекта. Класс, в котором происходит ошибка, имеет этот импорт «import com.mysema.query.jpa.JPQLQuery» – anjeludo

+0

Они используются в двух разных модулях, но вы не упомянули об этом в вопросе и показали их в том же самом pom? Пожалуйста, перестаньте тратить время людей и дайте минимальный, точный пример, который воспроизводит проблему. –

ответ

1

Наконец, я исправил свою проблему, обновив библиотеку querydsl-jpa 3.7.4 до QueryDSL 4 (и изменив код). Похоже, что Spring Boot 1.4 больше не совместим с QueryDSL 3 (поскольку Spring Data JPA 1.10 обновлен до Querydsl 4).

Спасибо.

2

Для библиотек, которые Spring Boot предоставляет для интеграции, вы должны использовать зависимость спецификации. В основном имея это в вашем П/родительском П:

<dependencyManagement> 
<dependencies> 
    <dependency> 
     <!-- Import dependency management from Spring Boot --> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-dependencies</artifactId> 
     <version>1.4.0.RELEASE</version> 
     <type>pom</type> 
     <scope>import</scope> 
    </dependency> 
</dependencies> 

И при указании реальных зависимостей, падение версии:

<dependency> 
    <groupId>com.mysema.querydsl</groupId> 
    <artifactId>querydsl-jpa</artifactId> 
</dependency> 

<dependency> 
    <groupId>com.querydsl</groupId> 
    <artifactId>querydsl-sql</artifactId> 
</dependency> 

Это гарантирует совместимость с зависимости BOM заботятся давая вам правильную версию.

Подробнее ответ here

0

ULISES является правильным, и вы могли бы использовать

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.4.3.RELEASE</version> 
    <relativePath/> <!-- lookup parent from repository --> 
</parent> 

чесотки зависимость, а также. просто проверить dependence version managed by spring boot для правой Group ID и Артефакт ID

+0

Как ваш ответ отличается от ответа Улисеса? –

+0

Я просто хочу упомянуть еще один вариант управления зависимостью с родительским тегом. Еще одна причина для ссылки на документ заключается в том, что имя группы, управляемое весной загрузки com.mysema.querydsl уже было изменено на com.querydsl, поэтому лучше всего проверить эту информацию - ссылка на документ. –