开发者社区> 问答> 正文

如何在CrudRepository中实现自定义查找方法以仅从数据库中获取特定列?

我得在存储库中执行SQL查询:

public interface UserRequestResponseRepository extends JpaRepository<UserRequestResponse, Integer> { //public static final String FIND_QUERY = "select user.u_httpstatus ,user.u_queryparam from UserRequestResponse user"; public static final String FIND_QUERY = "select new com.abc.datacollection.entity.UserRequestResponse(user.u_httpstatus ,user.u_queryparam) from UserRequestResponse user"; @Query(value = FIND_QUERY) public List getAllRequestResponseRecords();

} 其中UserProjection是我定义的投影:

public interface UserProjection { String getU_httpstatus(); String getU_queryparam();

} 类userRequestResponse的字段比u_httpstatus和u_queryparam的字段更多,但是我只希望响应中的这两个字段。

public @ResponseBody List getAllRequestResponseRecords() { return userRequestResponseRepository.findAll() ; } 如何修改上述代码(findAll())以从自定义查询获取结果,而不是从默认CrudRepository findAll()(返回所有字段)获取结果。

展开
收起
小六码奴 2019-10-03 19:37:38 1329 0
1 条回答
写回答
取消 提交回答
  • 首先,无需添加@Query即可使投影正常工作。只要具有UserProjection作为存储库中的方法的返回类型应该是足够的。 其次,您可以在存储库中使用以下方法作为基于投影的findAll方法;

    public List findAllProjectedBy();

    2019-10-09 16:03:18
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载
云时代的数据库技术趋势 立即下载
超大型金融机构国产数据库全面迁移成功实践 立即下载