我们如何在 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<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() (返回所有字段)中获取结果。


胡子哥哥
浏览 89回答 1
1回答

万千封印

首先,您不需要添加 a@Query来使投影起作用。只需将UserProjection存储库中的方法的返回类型作为方法的返回类型就足够了。其次,您可以在存储库中将以下方法作为基于投影的 findAll 方法;public List<UserProjection> findAllProjectedBy();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java