Указание столбцов в jpql select вызывает ошибку приведения

Когда я указываю столбцы в своем запросе jpql/jpa 2.0, т. е. select p.id, p.lastName, p.firstName from Profile p where p.group = :group, я получаю следующую ошибку: [Ljava.lang.Object; cannot be cast to com.profs.ws.Profile... Кто-нибудь знает, как решить эту проблему приведения?

Сам класс сущностей Profile имеет свойства следующих типов: String, int, and Collection. Свойства, которые я выбираю в запросе, относятся к типу String или int.


person nking253    schedule 20.11.2010    source источник


Ответы (1)


Когда вы указываете свойства объекта, JPA возвращает список Object[]. Вы можете привести возвращаемое значение к List<Object[] вместо List<Profile>, чтобы избежать ClassCastException. Если вы используете Hibernate в качестве поставщика JPA, вы можете сопоставить предложение select с новым объектом. Подробнее см. в документации по предложение select.

person Chandra Patni    schedule 20.11.2010
comment
Я согласен, но JPA поддерживает сопоставление предложения select с новым объектом с любым провайдером, а не только с Hibernate. Я думаю, что термин, используемый для класса контейнера, — это объект-конструктор, но я сейчас не помню. - person Jim Tough; 21.11.2010