При выборе подмножества таблицы hibernate не автоматически приводит его к объекту бизнес-домена в списке - PullRequest
1 голос
/ 07 февраля 2011

Когда я выбираю полную таблицу

т.е. выберите * из продукта

, Hibernate возвращает мне список объектов Product. Однако, когда я выбираю только его подмножество,

т.е. выберите название, цену товара

, Hibernate возвращает мне список объектов, которые он не может преобразовать в список объектов Product из коробки. Любые попытки преобразовать его в список объектов Product вызывают ClassCastException.

@SuppressWarnings("unchecked")
@Override
public List<UserRoleAndProgramCategory> get(int roleId, int programCategoryId) {
    String sHql;
    String[] key;
    Object[] value;

    key = new String[] { "roleId", "programCategoryId" };
    value = new Integer[] { roleId, programCategoryId };

    sHql = "select distinct l.userId, l.userName, l.fullName, l.roleId, l.roleName, l.roleCode, l.programCategoryId, l.programCategoryCode, l.programCategoryDescription from "
            + UserRoleAndProgramCategory.class.getName()
            + " as l where roleName <> ' ' and roleCode not in ('CONTRACTOR', 'ADMIN') and programCategoryId = :programCategoryId and roleId = :roleId";

    return (List<UserRoleAndProgramCategory>) super.getQueryWithCache(sHql, key, value, false, false, false)
            .getQueryResult();
}

Спасибо. Пожалуйста, дайте мне знать, где я ошибся.

Ответы [ 2 ]

1 голос
/ 07 февраля 2011
sHql = "select distinct new UserRoleAndProgramCategory(l.userId, l.userName, l.fullName, l.roleId, l.roleName, l.roleCode, l.programCategoryId, l.programCategoryCode, l.programCategoryDescription) from "
            + UserRoleAndProgramCategory.class.getName()
            + " as l where roleName <> ' ' and roleCode not in ('CONTRACTOR', 'ADMIN') and programCategoryId = :programCategoryId and roleId = :roleId";
1 голос
/ 07 февраля 2011

Пожалуйста, прочитайте документы .

Чтобы вернуть список объектов из запроса, который выбирает определенные свойства, необходимо использовать преобразователь Alias ​​To Bean.

Пример (для запросов SQL, но HQL работает так же)

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