为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

胡子哥哥 2023-09-20 15:17:56
我必须在我的存储库中执行 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<UserProjection> getAllRequestResponseRecords();}其中 UserProjection 是我定义的投影:public interface UserProjection {    String getU_httpstatus();    String getU_queryparam();}userRequestResponse 类具有比 u_httpstatus 和 u_queryparam 更多的字段,但我只想在响应中使用这 2 个字段。public @ResponseBody List<UserRequestResponse> getAllRequestResponseRecords() {    return userRequestResponseRepository.findAll() ;}如何修改上面的代码 (findAll()) 以从我的自定义查询中获取结果,而不是从默认的 CrudRepository findAll() (返回所有字段)中获取结果。
查看完整描述

1 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

首先,您不需要添加 a@Query来使投影起作用。只需将UserProjection存储库中的方法的返回类型作为方法的返回类型就足够了。

其次,您可以在存储库中将以下方法作为基于投影的 findAll 方法;

public List<UserProjection> findAllProjectedBy();


查看完整回答
反对 回复 2023-09-20
  • 1 回答
  • 0 关注
  • 88 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信