[SPRING] 스프링 데이터 투영 및 오류 : "결과 튜플에서 별칭을 찾을 수 없습니다! 쿼리가 별칭을 정의하는지 확인하십시오! "
SPRING스프링 데이터 투영 및 오류 : "결과 튜플에서 별칭을 찾을 수 없습니다! 쿼리가 별칭을 정의하는지 확인하십시오! "
JPA Query에서 Spring Data Projection을 얻는 접근법이 저에게는 효과적이지 않습니다.
https://stackoverflow.com/a/45443776/1005607
내 테이블 :
LOOKUP_T
id description display_order_num
------------------------------------
1 Category #1 1
2 Category #2 2
ACTIVITIES_T (activity_category_id는 LOOKUP_T.id에 매핑 됨)
id activity_category_id activity_title
---------------------------------------
1 2 Sleeping
2 2 Eating
3 2 Travel
이 조인에서 특정 필드를 가져 오기위한 스프링 데이터 DAO 인터페이스 :
@Repository
public interface ActivitiesDAO extends JpaRepository<ActivitiesT, Integer> {
@Query("select a.activityTitle, l.description as category, " +
"l.displayOrderNum as categoryDisplayOrderNum " +
"from ActivitiesT a, LookupT l " +
"where a.lookupT.id = l.id order by l.displayOrderNum asc ")
public List<MySpringDataProjection> findCustom();
}
스프링 데이터 투영 모델 인터페이스 :
public interface MySpringDataProjection {
public String getActivityTitle();
public String getCategory();
public Integer getCategoryDisplayOrderNum();
}
모든 것은 그 받아 들인 대답과 같습니다. 그러나이 오류가 발생하는 경우 :
org.springframework.dao.InvalidDataAccessApiUsageException: No aliases found in result tuple! Make sure your query defines aliases!; nested exception is java.lang.IllegalStateException: No aliases found in result tuple! Make sure your query defines aliases!
org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:381)
org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:489)
org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:59)
org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:213)
나는 Select에서 새로운 Obj (..)를 사용하고 싶지 않다. 그것은 더러워서 우리가 JPA에 추상화하고있는 Hibernate에 의존한다.
나는이 Projection 접근 방식을 작동시키고 싶다.
내가 언급 한 (비 작동) 대답을 가진 관련 질문, Spring 데이터 JPA : get 결과 튜플에서 별칭을 찾지 못했습니다! 사용자 지정 쿼리를 실행할 때의 오류
해결법
-
==============================
1.나는 같은 문제를 겪는다. 몇 가지 변경을 시도한 후에 NativeQuery에서 각 열에 "as"를 추가해야합니다 (열 이름도 변경되지 않음). 당신을 위해, 같은 SQL을 변경하십시오 :
나는 같은 문제를 겪는다. 몇 가지 변경을 시도한 후에 NativeQuery에서 각 열에 "as"를 추가해야합니다 (열 이름도 변경되지 않음). 당신을 위해, 같은 SQL을 변경하십시오 :
@Query("select a.activityTitle **as activityTitle**, l.description as category, " + "l.displayOrderNum as categoryDisplayOrderNum " + "from ActivitiesT a, LookupT l " + "where a.lookupT.id = l.id order by l.displayOrderNum asc ")
-
==============================
2.인터페이스에서 정확한 이름 메서드를 정의해야한다고 생각하지만이 접근법이 해당 사례에 적용되는지 확신 할 수 없습니다.
인터페이스에서 정확한 이름 메서드를 정의해야한다고 생각하지만이 접근법이 해당 사례에 적용되는지 확신 할 수 없습니다.
귀하의 예에서는 오픈 투영을 시도 할 수 있습니다.
-
==============================
3.나는 같은 문제가 있었고 나는 그것을 해결한다고 생각한다. 내가 한 것은 동일한 이름을 가지고 있더라도 모든 필드에서 별칭을 사용하는 것입니다. activityTitle에서도 별칭을 사용하십시오. 이렇게 :
나는 같은 문제가 있었고 나는 그것을 해결한다고 생각한다. 내가 한 것은 동일한 이름을 가지고 있더라도 모든 필드에서 별칭을 사용하는 것입니다. activityTitle에서도 별칭을 사용하십시오. 이렇게 :
@Repository public interface ActivitiesDAO extends JpaRepository<ActivitiesT, Integer> { @Query("select a.activityTitle as activityTitle, l.description as category, " + "l.displayOrderNum as categoryDisplayOrderNum " + "from ActivitiesT a, LookupT l " + "where a.lookupT.id = l.id order by l.displayOrderNum asc ") public List<MySpringDataProjection> findCustom(); }
from https://stackoverflow.com/questions/47420600/spring-data-projection-and-error-no-aliases-found-in-result-tuple-make-sure-y by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 배치 프로세서 프로세스 () 메소드에서 Spring 배치 작업 시작 메소드로 예외를 던지려면? (0) | 2019.04.25 |
---|---|
[SPRING] @RequestParam은 정확히 무엇이며 어떻게 채워 집니까? (0) | 2019.04.25 |
[SPRING] 저지에 Spring의 HandlerInterceptor와 비슷한 인터셉터가 있습니까? (0) | 2019.04.25 |
[SPRING] bean을 JSF Managed Bean으로 autowiring 할 때 널 (null) 포인터 (0) | 2019.04.25 |
[SPRING] vaadin과 함께 스프링 부트를 사용할 때 js 파일 용 404 (0) | 2019.04.25 |