spring data jpa使用@Query原生Sql多表联合查询

在jpa中使用联合查询,关于返回值类型的问题,一直不知该怎么写,今天终于找到了解决的办法,记录一下

ArticleVoteRepository.java:

@RepositoryRestResource(path = "vote")
public interface ArticleVoteRepository extends JpaRepository<ArticleVote, Integer> {

    @Query(nativeQuery = true, value = "select DISTINCT v.id,v.title,v.count,case when vu.user_id is null then 'false' else 'true' end as flag from table1 v left join table2 vu on v.id = vu.vote_id and vu.user_id=:user order by v.id desc")
    public List<Object> findVoteList(@Param("user") Integer user);

}

在控制器中:

@Controller
@RequestMapping(path = "api")
public class MainController {
    @Autowired
    private ArticleVoteRepository voteRepository;    @RequestMapping(path = "/getVoteList", method = RequestMethod.GET)
    public @ResponseBody List<Object> getVoteList(@RequestParam Integer user) {
	ArticleVoteTreeUtil voteUtil = new ArticleVoteTreeUtil();
	return voteUtil.voteListTest(voteRepository, user);
    }
}


在业务层中:

ArticleVoteTreeUtil.java

    public List<Object> voteListTest(ArticleVoteRepository voteRepository, Integer userId) {
	this.voteRepository = voteRepository;
	List<Object> result = voteRepository.findVoteList(userId);
	for (Object row : result) {
	    Object[] rowArray = (Object[]) row;
	    Map<String, Object> mapArr = new HashMap<String, Object>();
	    mapArr.put("id", rowArray[0]);
	    mapArr.put("title", rowArray[1]);
	    mapArr.put("count", rowArray[2]);
	    mapArr.put("flag", rowArray[3]);
	    list.add(mapArr);
	}
	return list;

    }


  • 6
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值