Запрос с использованием предложения IN и JOIN возможен в JpaRepository с использованием Spring? - PullRequest
0 голосов
/ 10 декабря 2018

Когда я пытаюсь перечислить элементы в JPQL или Native Query, мой список всегда возвращает 0 элементов.Когда я делаю запрос непосредственно в базе данных, запрос в порядке:

@Query(value = "SELECT xml FROM CapturaXml xml  
            JOIN xml.capturaDados dados ON dados.chnfe = xml.chnfe   
            WHERE xml.chnfe IN (:chnfes) AND dados.capturaCerts.cnpj = :cnpj")  
Page<CapturaXml> findByCnpjInChnfes(@Param("cnpj") String cnpj, @Param("chnfes") List<String> chnfes, Pageable pageable);

Или этот код:

@Query(value = "SELECT xml FROM CAPTURA_XML xml  
            JOIN CAPTURA_DADOS dados ON dados.chnfe = xml.chnfe  
            WHERE dados.cnpj = :cnpj AND xml.chnfe IN (:chnfes)",  
nativeQuery = true)  Page<CapturaXml> findByCnpjInChnfes(@Param("cnpj") String cnpj, @Param("chnfes") List<String> chnfes, Pageable pageable);

Мой тест:

@Test
    public void testBuscarPorCnpjEChnfes() {
        List<String> chnfes = Arrays.asList(CHNFE1, CHNFE2, CHNFE3, CHNFE4);

        @SuppressWarnings("deprecation")
        PageRequest page = new PageRequest(0, 10);
        Page<CapturaXml> xmls = this.capturaXmlRepository.findByCnpjInChnfes(CNPJ, chnfes, page);

        assertEquals(4, xmls.getTotalElements());
    }

Мойсписок проверок 0 элементов, но когда я добавляю List<CapturaXml> list = this.capturaXmlRepository.findAll(); элементы находятся внутри списка.

В чем проблема с моими запросами?

Obs: 1:Я пытался сделать Fetch Eager, но не решил проблему.

1 Ответ

0 голосов
/ 10 декабря 2018

Я бы предложил проверить версию Spring Data и пакет используемых @Query.Spring Data использует собственную аннотацию @Query.

...