Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring数据jpa。将映射作为分组操作的结果返回_Java_Spring_Jpa_Spring Data Jpa_Spring Data - Fatal编程技术网

Java Spring数据jpa。将映射作为分组操作的结果返回

Java Spring数据jpa。将映射作为分组操作的结果返回,java,spring,jpa,spring-data-jpa,spring-data,Java,Spring,Jpa,Spring Data Jpa,Spring Data,我在jpa存储库界面中有一个查询 @Query("select e.campaignId, e from CampaignCrTargetingProfile e where e.campaignId in :ids group by e.campaignId") public Map<Integer, List<CampaignCrTargetingProfile>> findByCampaignIdIn(@Param("ids") Iterable<Intege

我在jpa存储库界面中有一个查询

@Query("select e.campaignId, e from CampaignCrTargetingProfile e where e.campaignId in :ids group by e.campaignId")
public Map<Integer, List<CampaignCrTargetingProfile>> findByCampaignIdIn(@Param("ids") Iterable<Integer> ids);
@Query(“选择e.campaignId,从CampaignCrTargetingProfile e中选择e.campaignId,其中e.campaignId位于:由e.campaignId组成的ids组”)
公共地图findByCampaignIdIn(@Param(“ids”)Iterable ids);
活动ID是整数

但是当我尝试执行这个查询时,我发现了一个异常

Caused by: org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type java.lang.Integer to type java.util.Map<?, ?>
at org.springframework.core.convert.support.GenericConversionService.handleConverterNotFound(GenericConversionService.java:311) ~[spring-core-4.1.5.RELEASE.jar:4.1.5.RELEASE]
at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:192) ~[spring-core-4.1.5.RELEASE.jar:4.1.5.RELEASE]
at org.springframework.core.convert.support.ArrayToObjectConverter.convert(ArrayToObjectConverter.java:66) ~[spring-core-4.1.5.RELEASE.jar:4.1.5.RELEASE]
at org.springframework.core.convert.support.ConversionUtils.invokeConverter(ConversionUtils.java:35) ~[spring-core-4.1.5.RELEASE.jar:4.1.5.RELEASE]
... 192 common frames omitted
原因:org.springframework.core.convert.ConverterNotFoundException:未找到能够从java.lang.Integer类型转换为java.util.Map类型的转换器
在org.springframework.core.convert.support.GenericConversionService.handleConverterNotFound(GenericConversionService.java:311)~[spring-core-4.1.5.RELEASE.jar:4.1.5.RELEASE]
在org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:192)~[spring-core-4.1.5.RELEASE.jar:4.1.5.RELEASE]
在org.springframework.core.convert.support.ArrayTobObjectConverter.convert(ArrayTobObjectConverter.java:66)~[spring-core-4.1.5.RELEASE.jar:4.1.5.RELEASE]
在org.springframework.core.convert.support.ConversionUtils.invokeConverter(ConversionUtils.java:35)~[spring-core-4.1.5.RELEASE.jar:4.1.5.RELEASE]
... 省略192个公共帧

是否可以按字段搜索实体并将结果作为地图返回?如果这是不可能的,是否有其他方法来实现类似的功能?

您可以从JPQL查询中获得一个列表,然后使用Java8流API将其转换为映射

// This method in your Repository interface
@Query("SELECT e FROM CampaignCrTargetingProfile e WHERE e.campaignId IN :ids")
public List<CampaignCrTargetingProfile findByCampaignIdIn(@Param("ids") Iterable<Integer> ids);

// This source from your Service class
List<CampaignCrTargetingProfile> list = repo.findByCampaignIdIn(iterableArg);
Map<Integer, List<CampaignCrTargetingProfile>> mapResult = list.stream()
    .collect(Collectors.groupingBy(CampaignCrTargetingProfile::getCampaignId));
//在存储库界面中使用此方法
@查询(“从CampaignCrTargetingProfile e中选择e,其中e.campaignId位于:ids中”)

公共列表在您的查询中没有可以分组的内容,没有计算等。。。因此,不确定您是否理解……。。@M.Deinum的群组。抱歉,我的查询错误,我已将其更改。@M.Deinum我想按campaignId字段搜索实体,并绘制关键为campaignId值、值为实体列表的映射。分组不是这样工作的。。。例如,您可以根据计数或总和进行分组。在您的情况下,只需返回一个列表,然后将其处理为映射。这是我怀疑的最简单的方法。这是低效的,分组是由应用程序而不是数据库引擎在内存中完成的。您是对的,建议只对小数据集进行分组。如果您的需求是分组,比如说20000行,那么最好让DBMS来完成这项工作。