我必须在我的存储库中执行 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() (返回所有字段)中获取结果。
最佳答案
首先,您不需要添加 @Query
来使投影正常工作。只需将 UserProjection 作为存储库中方法的返回类型就足够了。有关此的更多信息 here
其次,您可以在存储库中将以下方法作为基于投影的 findAll 方法;
public List<UserProjection> findAllProjectedBy();
关于java - 我们如何在 CrudRepository 中实现自定义查找方法以仅从数据库中获取特定列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58213716/