2016-09-18 1 views
0

나는 Hibernate를 사용하고 있으며, 2 개의 개별 테이블에 저장된 사용자에 대한 정보를 반환하려고합니다.JPQL을 사용하여 사용자 정의 객체의 목록을 반환

나는이 만든 쿼리 : 나는 select 절에 돌아가 모든 구성원 (단지 구성원 만있는 클래스와 JSON 목적을 위해 어떤 방법을) 포함 BasicUserInfo라는 클래스를 만들었

@Entity(name = "Users") 
@Table(name = "Users") 
@NamedQueries(
     { 
     @NamedQuery(name = QueryNames.QUERY_USER_GET_ALL_USERS_BASIC_INFO, 
        query = "select u.userId, p.personName, p.personMobile, p.personEmail, u.userStaus, u.usertype, p.personNotes " 
          + "FROM Person p JOIN User u ON p.personId = u.userPersonId " 
          + "Where u.Active = 1") 
     }) 

public class User 
{ ... } 

.

내가 일하기 위해 노력하고있어 방법은 다음과 같이이다 :

Type mismatch: cannot convert from List<User> to List<UserBasicInfo>

:

List<BasicUserInfo> list = list(namedQuery(QueryNames.QUERY_USER_GET_ALL_USERS_BASIC_INFO)); 

그러나, 이것은 활성화에 마지막 줄 이후로 컴파일되지 않습니다

은 위의 오류가 발생했습니다 쿼리에서 원하는 목록 유형을 반환하도록하려면 어떻게해야합니까? 또는 Object[]의 목록 일지라도 Json 용도로 적합합니다. 나는 결국 이런 식으로 시작하는 쿼리를 변경했다 않았다 무엇

+0

list()와 namedQuery() 메소드가 무엇을하는지, 어떻게 선언되었는지는 알지 못합니다. –

+0

그것은 Dropwizard의 API의 일부입니다. 쿼리를 실행하고 결과를 목록으로 변환합니다. –

+1

쿼리가 실제로 반환하는 것은 목록 이지만이 메서드는 목록 을 반환하도록 선언되었습니다. 그 방법을 사용하지 마십시오. EntityManager의 API (또는 Hibernat의 Session API)를 사용하십시오. –

답변

0

:

"select new com.myPackage.Users.UserBasicInfo(u.userId, p.personName, p.personMobile, p.personEmail, u.userStaus, u.usertype, p.personNotes) ... 

유형은 쿼리에서 반환 인수를 받아들이는 생성자를 가질 필요가있다.

관련 문제