Запрос с использованием псевдонима в столбце выдает ошибку - PullRequest
4 голосов
/ 19 августа 2011

Когда я использую псевдоним для столбца, я получаю сообщение об ошибке.Без псевдонима все работает хорошо.В чем проблема с этим?Это простой пример, но нужно использовать больше псевдонимов в реальном проекте, чтобы обернуть результаты в некоторый класс не-сущности, но не может из-за этой ошибки.Как решить эту проблему?

НЕ РАБОТАЕТ (с псевдонимом в столбце id):

public List<Long> findAll(Long ownerId) {
    String sql = "select id as myId  from products where ownerId = "+ownerId;
    SQLQuery query = getSession().createSQLQuery(sql);
    return query.list();
}

Ошибка:

WARN [JDBCExceptionReporter: 77]: ошибка SQL: 0, состояние SQLState: S0022 ОШИБКА [JDBCExceptionReporter: 78]: идентификатор столбца не найден.

РАБОТА (без псевдонима):

public List<Long> findAll(Long ownerId) {
    String sql = "select id from products where ownerId = "+ownerId;
    SQLQuery query = getSession().createSQLQuery(sql);
    return query.list();
}

1 Ответ

6 голосов
/ 19 августа 2011

Если ваш «продукт» сопоставлен, вероятно, hibernate не знает о «myId» и поэтому не может выбрать его.Вы можете попробовать что-то вроде:

getSession().createSQLQuery(sql).addScalar("myId", Hibernate.LONG)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...