Spring数据JPA - 1.5将结果转换为非实体POJO类

问题描述 投票:0回答:1

我使用的是Spring数据JPA 1.5版

@SqlResulttSetMapping在版本中不支持

SELECT 
bc.badge_id , bc.badge_progress , bc.badge_level, bc.badge_unique_key , 
b.badge_name , b.badge_type , b.how_to_earn , b.description , b.unit ,
b.level1_milestone , b.level2_milestone , b.level3_milestone , b.image_url
FROM badge_calculation bc 
INNER JOIN badges b ON b.id = bc.badge_id
where bc.user_id = '3';

数据库中有两个表,我想要两个列中的一些列,并希望将结果映射到非实体POJO类。它包含我从两个表中都需要的字段。有什么解决方案吗?

spring-boot spring-data-jpa criteria hibernate-criteria
1个回答
1
投票

在存储库中,您可以执行类似的操作。您可以接收一个对象数组列表,然后您可以迭代它们并随意执行任何操作。执行此查询并在断言后放置断点以检查列表并查看字段类型。

@Query( value = ""
        + " SELECT  "
        + "bc.badge_id , bc.badge_progress , bc.badge_level, bc.badge_unique_key ,  "
        + "b.badge_name , b.badge_type , b.how_to_earn , b.description , b.unit , "
        + "b.level1_milestone , b.level2_milestone , b.level3_milestone , b.image_url "
        + "FROM badge_calculation bc  "
        + "INNER JOIN badges b ON b.id = bc.badge_id "
        + "where bc.user_id = :userId", nativeQuery = true )
List<Object[]> runThisHere(  @Param( "userId" ) int userId);
© www.soinside.com 2019 - 2024. All rights reserved.