Исключение с JPA-запросом Spring

#java #spring #jpa

Вопрос:

Я хочу получить список своих объектов с помощью jpa-запроса, я использую этот код:

 @Query("select vz from VzClass vz"  
            "join vz.PHClass phc on vz.ph = phc.id"  
            "join phc.GFClass gf on phc.id = gf.phouse"  
            "join gf.PIClass pi on gf.pic = pi.id"  
            "where vz.fi is not null and vz.ci is null and pi.prId in (:pIds)")
    List<VzClass> getVzByPIids(@Param("pIds") List<String> plIds, Pageable pageable);
 

Но я получаю исключение:

 unexpected token: vz"
 

В чем там проблема?

Ответ №1:

В конце строковых литералов отсутствуют пробелы. Например, после объединения результат выглядит так «…из VzClass соединяйся с vz.PHClass…». Это должно выглядеть так

 @Query("select vz from VzClass vz "  
            "join vz.PHClass phc on vz.ph = phc.id "  
            "join phc.GFClass gf on phc.id = gf.phouse "  
            "join gf.PIClass pi on gf.pic = pi.id "  
            "where vz.fi is not null and vz.ci is null and pi.prId in (:pIds) ")
 

Ответ №2:

Вам нужно сбежать с концом строки или пробелом, вот так:

 @Query("select vz from VzClass vzn"  
        "join vz.PHClass phc on vz.ph = phc.idn"  
        "join phc.GFClass gf on phc.id = gf.phousen"  
        "join gf.PIClass pi on gf.pic = pi.idn"  
        "where vz.fi is not null and vz.ci is null and pi.prId in (:pIds)")
List<VzClass> getVzByPIids(@Param("pIds") List<String> plIds, Pageable pageable);