[SPRING] CrudRepository에서 사용자 지정 SQL 쿼리
SPRINGCrudRepository에서 사용자 지정 SQL 쿼리
나는 CrudRepository를 확장 내 저장소에 일부 SQL 쿼리를 실행하기 위해 노력하고있어. 나는 컨트롤러에 다음 코드를 :
@CrossOrigin(origins = "*")
@GetMapping(path="/all")
public @ResponseBody List<UserProjection> getAllRequestResponseRecords() {
return userRequestResponseRepository.findAllProjectedBy() ;
}
DAO를 코드는 다음과 같습니다 :
public interface UserRequestResponseRepository extends CrudRepository<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();
List<UserProjection> findAllProjectedBy();
}
클래스는 다음과 같습니다
import java.sql.Date;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity // This tells Hibernate to make a table out of this class
public class UserRequestResponse {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private String u_httpstatus;
private String u_error_message;
private String u_queryparam;
public UserRequestResponse(String u_httpstatus, String u_queryparam) {
this.u_httpstatus = u_httpstatus;
this.u_queryparam = u_queryparam;
}
public String getU_httpstatus() {
return u_httpstatus;
}
public void setU_httpstatus(String u_httpstatus) {
this.u_httpstatus = u_httpstatus;
}
public String getU_error_message() {
return u_error_message;
}
public void setU_error_message(String u_error_message) {
this.u_error_message = u_error_message;
}
public String getU_queryparam() {
return u_queryparam;
}
public void setU_queryparam(String u_queryparam) {
this.u_queryparam = u_queryparam;
}
}
투사는 다음과 같습니다
public interface UserProjection {
String getU_httpstatus();
String getU_queryparam();
}
나는 (이 같은)처럼 쿼리를 추가 할 수있는 방법에 대한 혼란 스러워요 :
select u_type,count(u_type) from u_user_click_data group by u_type
어떻게 투사를 변경하고 기타 필요한 변화가 무엇을합니까?
해결법
-
==============================
1.아래로 DAO를 변경할 수 있으며,이 작업을해야합니다.
아래로 DAO를 변경할 수 있으며,이 작업을해야합니다.
public interface UserRequestResponseRepository extends CrudRepository<UserRequestResponse, Integer> { public static final String FIND_QUERY = "select new com.abc.datacollection.entity.UserRequestResponse(user.u_httpstatus ,user.u_queryparam, COUNT(user.u_type)) from UserRequestResponse user GROUP BY user.u_type"; @Query(value = FIND_QUERY) //public List<UserProjection> getAllRequestResponseRecords(); List<UserProjection> findAllProjectedBy();
}
빈 클래스 생성자는 전달 매개 변수가 있어야합니다 확인하십시오.
쿼리가 유효 JPA 쿼리 (여기)인지 확인합니다.
from https://stackoverflow.com/questions/58215972/custom-sql-queries-in-crudrepository by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] REST API에 대한 JSON 응답에 필드를 제한? (0) | 2019.10.04 |
---|---|
[SPRING] 조건 검색 필터를 구현 (0) | 2019.10.04 |
[SPRING] 잭슨을 사용하여 자바에 POJO로 JSON 변환하는 방법 (0) | 2019.10.04 |
[SPRING] 봄 사양 및 Pageable를 (0) | 2019.10.04 |
[SPRING] 어떻게 잭슨 objectmapper에 dateformat 설정 봄에 MVC 설정을 추가하는 방법은 무엇입니까? (0) | 2019.10.04 |