[SPRING] SqlResultSetMapping 및 기본 쿼리와 JPA 데이터 저장소
SPRINGSqlResultSetMapping 및 기본 쿼리와 JPA 데이터 저장소
나는 다음과 같은 상황에 갇혀 있었다 :
나의 실체는하지만 난 JPQL을 사용하지 수있는 방식으로, 서로 관련이 있습니다. 나는 네이티브 SQL을 사용하도록 강요했다. 지금은 ValueObject 이러한 결과를 매핑 할. 명확하게하기 위해, 내가 개체 배열의 목록을 싶지 않아 (목록 <[] 객체>). 나는 일부 열을 필요가있는 6 개체가 있습니다. 아무도 나에게 네이티브 쿼리와 같은 매핑을 구현하는 방법에 대한 예를 들어 줄 수 있습니까?
내가 겪은 튜토리얼.
내 코드 :
@SqlResultSetMapping(
name = "findAllDataMapping",
classes = @ConstructorResult(
targetClass = MyVO.class,
columns = {
@ColumnResult(name = "userFirstName"),
@ColumnResult(name = "userLastName"),
@ColumnResult(name = "id"),
@ColumnResult(name = "packageName")
}
)
)
@NamedNativeQuery(name = "findAllDataMapping",
query = "SELECT " +
" u.first_name as userFirstName, " +
" u.last_name as userLastName, " +
" i.id as id, " +
" s.title as packageName, " +
"FROM " +
" invoice as i " +
"JOIN user as u on i.user_id=u.id " +
"LEFT JOIN subscription_package as s on i.subscription_package_id=s.id " +
"where u.param1=:param1 and i.param2=:param2" +
)
public class MyVO {
private String userFirstName;
private String userLastName;
private Long id;
private String packageName;
public MyVO (String userFName, String userLName,
Long id, String packageName) {
this.userFirstName = userFName;
this.userLastName = userLName;
this.id = id;
this.packageName = packageName;
}
// getters & setters
}
내 JPA-저장소 모듈에서 :
public interface MyRepository extends JpaRepository<MyEntity, Long> {
List<MyVO> findAllOfMyVO(@Param("param1") String param1, @Param("param2") String param2);
}
요점은 내가 이런 종류의 매핑을 사용할 수 있도록 이러한 주석을 넣을 위치를 알 수 없다는 것입니다. 기본 쿼리에서 나는 새로운 rs.rado.leo.mypackage.MyVO (...)를 사용할 수 없습니다. 나는 다음과 같은 오류가 발생했습니다 :
에 의해 발생 :
org.springframework.data.mapping.PropertyReferenceException: No property findAllOfMyVO found for type MyEntity!
내 질문은 분명하다 것으로 가정합니다. 그렇지 않은 경우, 내가 내 질문을 편집 할 수 있도록 알려 주시기 바랍니다.
사전에 감사합니다!
해결법
-
==============================
1.누락 된 resultClass를 추가
누락 된 resultClass를 추가
@NamedNativeQuery(name = "findAllDataMapping", resultClass = Entity.class, query="sql")
또는
@NamedNativeQuery(name = "findAllDataMapping", resultClass = MyVO.class, resultSetMapping ="findAllDataMapping" query = "sql")
그리고 마지막으로 저장소에 쿼리를 호출
@Query(nativeQuery = true, name = "findAllDataMapping") List<MyVO> findAllOfMyVO(@Param("param1") String param1, @Param("param2") String param2);
-
==============================
2.당신은 쿼리와 쿼리를 표시해야합니다 :) 그것은 당신이 당신의 resulsts가 매핑 한 기업이기 때문에 그리고 당신은 대신 MyEntity의 MyVO를 사용할 필요가
당신은 쿼리와 쿼리를 표시해야합니다 :) 그것은 당신이 당신의 resulsts가 매핑 한 기업이기 때문에 그리고 당신은 대신 MyEntity의 MyVO를 사용할 필요가
@Repository public interface MyRepository extends JpaRepository<MyVO, Long> { @Query(nativeQuery = true) List<MyVO> findAllOfMyVO(@Param("param1") String param1, @Param("param2") String param2); }
-
==============================
3.당신은 거의가 있지만 아래 부품
당신은 거의가 있지만 아래 부품
희망이 도움이.
from https://stackoverflow.com/questions/46171583/jpa-data-repositories-with-sqlresultsetmapping-and-native-queries by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 파이프 라인 집계 봄 데이터 MongoDB를 조회 (0) | 2019.10.16 |
---|---|
[SPRING] application.properties의 UTF-8 인코딩은 봄 부팅 속성 (0) | 2019.10.12 |
[SPRING] 봄 주석 @ModelAttribute 및 @Valid (0) | 2019.10.11 |
[SPRING] 스프링 데이터 JPA - 결과 여러 집계 함수와 사용자 정의 쿼리 (0) | 2019.10.05 |
[SPRING] 응용 프로그램 속성 "server.servlet.session.timeout는"봄 부트 프로젝트에서 작동하지 않습니다 (0) | 2019.10.04 |