spring Jpa не распознает правильное имя сущности внутри параметра @Query

#java #spring-boot #spring-data-jpa #spring-data

Вопрос:

Я столкнулся с очень сложной проблемой.Поэтому мне нужен ваш вклад.

У нас есть общая библиотека запросов и ответов, которая имеет структуру из 2 папок для 2 разных регионов:

 com.test.aisa
com.test.europe
 

Оба этих пакета имеют общую транзакцию имени сущности.java ( поскольку это распространено в разных регионах.Таким образом, внутри библиотеки была создана специальная структура пакета региона ).

Теперь у нас есть 2 приложения для весенней загрузки.Один для АЗИИ /один для ЕВРОПЫ.

В моем приложении ASIA SPRING BOOTAPP я написал следующее TransactionRepository.java. Вот код:

 public interface TransactionRepository  extends JpaRepository<com.test.asia.Transction,String>{


@Query("select ai from Transaction ai where ai.name : name")
Stream<Transction> findTransctionByName(@Param("name"));
 

}

Теперь проблема находится внутри @Query(«выберите ai из транзакции ai, где ai.name : имя») указывает на com.test.europe.Transaction.java.

Это не распознает поля, которые присутствуют как часть com.test.aisa.Transaction.java.

Например, в поле имя присутствует com.test.aisa.Операция.java ,а не в европейской версии. Отдыхайте везде, где он указывает на правильную сущность транзакции.Только внутри @Query это создает проблему.

Пожалуйста, помогите!!!!!!! Я никогда раньше не сталкивался с подобными проблемами.!!!

Ответ №1:

Вы можете сделать это следующим образом:

 @Query("select ai from Transaction ai where ai.name= :name")
 

Вы забыли оператор равенства в условии where

Ответ №2:

Вы должны использовать полное имя класса в запросе jpa:

 @Query("select ai from com.test.asia.Transaction ai where ai.name = :name")
 

Комментарии:

1. Нет, обычно вам не нужно указывать полное имя.