Обновление Spring Boot с версии 1.3.2 с версии 1.4.0 приводит к появлению псевдонимов в кортеже результатов!
Я решил обновить приложение Spring Boot с 1.3.2 до 1.4.0. К сожалению, это нарушает почти все мои запросы репозитория JPA, которые я указал с @Query
аннотаций.
Например
public interface MatchRepository extends JpaRepository<Match, MatchKey> {
// ...
@Query("SELECT min(m.hourOfTheMatch) FROM Match m WHERE m.primaryKey.matchday = :matchday")
DateTime getFirstMatchStartDateTime(Matchday matchday);
// ...
}
MatchKey
является @EmbeddableId
в этом случае, но я не думаю, что это основной случай.
Запрос заканчивается исключением времени выполнения.
Причина: java.lang.IllegalStateException: псевдонимы не найдены в кортеже результатов! Убедитесь, что ваш запрос определяет псевдонимы!
Я понятия не имею, что это такое и что изменилось между этими версиями.
Я обнаружил, что это проблема JIRA, но я не использую напрямую версию spring-data-jpa
в моем pom.xml
, Я использую только spring-boot-starter-parent
в версии 1.4.0
,
1 ответ
Проблема заключалась в том, что я использовал DateTime
от йода. Переход на JDK 8 типов даты и времени (ZonedDateTime
) и обновление до Hibernate 5.2.2. Наконец-то решена проблема.
На самом деле Oliver Gierke помог в этой дискуссии.