簡體   English   中英

使用Spring在JpaRepository中可以使用IN子句和JOIN進行查詢嗎?

[英]Query using IN clause and JOIN are possible in JpaRepository using Spring?

當我嘗試列出JPQL或本機查詢中的元素時,我的列表離開時返回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,但沒有解決問題。

我建議檢查Spring Data版本和使用過的@Query包。 Spring Data使用自己的@Query注釋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM