2016-09-18 3 views
0

Я использую Hibernate, и я пытаюсь вернуть некоторую информацию о пользователях, которые сохраняются в 2 отдельных таблицах.Возврат списка настраиваемого объекта с помощью JPQL

Запрос Я сделал:

@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 
{ ... } 

Я сделал класс под названием BasicUserInfo, чтобы содержать все элементы, я возвращающие в выбранном пункте (просто класс только с членами и не метод JSon целей) ,

Так я пытаюсь сделать его работу, как это:

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

Однако это не компилируется, так как в последней строке с активацией выше получил ошибку:

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

Что я могу сделать, чтобы запрос возвращал тип списка, который я хочу? Или даже список Object[] также хорош для целей Json.

+0

Мы понятия не имеем, что делают методы list() и namedQuery() и как они объявлены. –

+0

Это часть API Dropwizard. Он запускает запрос и преобразует результат в список –

+1

Ну, этот метод объявлен для возврата списка , хотя то, что ваш запрос действительно возвращает, является списком . Просто не используйте этот метод. Используйте API EntityManager (или API сеансов Hibernat). –

ответ

0

То, что я в конце концов сделал изменял запрос, чтобы начать так:

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

типа должен иметь конструктор, который принимает аргументы, возвращаемые запросом.