Привести результат Hibernate к списку объектов - PullRequest
11 голосов
/ 01 февраля 2011

У меня есть вызов в спящем режиме в моем DAO, который выглядит следующим образом

List<Associate> associate = (List<Associate>)session.createSQLQuery("SELECT * FROM associates WHERE fk_id = :id AND fk_associate_id = (SELECT id FROM users WHERE fk_user_type = 2)").setParameter("id", id).list();

Я получаю сообщение о том, что не могу привести результирующий список к типу модели Associate. Я не понимаю, почему это происходит. Я возвращаю только те поля, которые есть в таблице партнеров.

Ответы [ 2 ]

34 голосов
/ 01 февраля 2011

Необходимо указать класс сущности, в который следует преобразовать результат, используя addEntity(), поскольку вы выполняете SQL-запрос, который ничего не знает о сущностях:

List<Associate> associate = (List<Associate>) session.createSQLQuery(
    "SELECT * FROM associates WHERE fk_id = :id AND fk_associate_id = (SELECT id FROM users WHERE fk_user_type = 2)")
    .addEntity(Associate.class)
    .setParameter("id", id).list(); 

См.также:

0 голосов
/ 30 декабря 2018

Можно применить ResultTransformer к собственным запросам SQL, что позволяет ему возвращать неуправляемые объекты.

sess.createSQLQuery("SELECT NAME, BIRTHDATE FROM CATS")
        .setResultTransformer(Transformers.aliasToBean(CatDTO.class))

Приведенный выше запрос вернет список CatDTO, который имеетбыл создан и внедрил значения NAME и BIRTHNAME в соответствующие им свойства или поля.

source: Link

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...