gpt4 book ai didi

java - 使用 Spring 在 JpaRepository 中可以使用 IN 子句和 JOIN 进行查询吗?

转载 作者:太空宇宙 更新时间:2023-11-04 09:59:14 24 4
gpt4 key购买 nike

当我尝试在 JPQL 或 native 查询中列出元素时,我的列表返回 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(); 时元素位于列表内。

我的查询有什么问题?

观测:1:我尝试让Fetch Eager,但没有解决问题。

最佳答案

我建议检查Spring Data版本和使用的@Query的包。 Spring Data 使用自己的 @Query 注释。

关于java - 使用 Spring 在 JpaRepository 中可以使用 IN 子句和 JOIN 进行查询吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53707797/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com