我得在存储库中执行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()(返回所有字段)获取结果。
首先,无需添加@Query即可使投影正常工作。只要具有UserProjection作为存储库中的方法的返回类型应该是足够的。 其次,您可以在存储库中使用以下方法作为基于投影的findAll方法;
public List findAllProjectedBy();
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。