Hibernate: проблема с подзапросом HQL Row Count - PullRequest
3 голосов
/ 22 марта 2011

Я пытаюсь работать с подзапросом / подвыбором в HQL (Hibernate), но он не работает и выдает ошибку ...

Я хочу знать, есть ли в HQL эквивалент чего-то подобного: ("нормальный" SQL)

select count(Z) from (SELECT SUM(existencia), almacen, oficina, fila from re_tinventarioubicacion where inventorybranchto = 2 GROUP BY almacen, oficina, fila, estante, entrepano, casilla, precioetiqueta) as Z

Я пытался "перевести" его с SQL на HQL, но он не работает ... он выдает следующее:

org.hibernate.hql.ast.QuerySyntaxException: неожиданный токен

По сути, мне нужно получить количество строк в результирующем подзапросе.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 12 апреля 2011

Вы можете использовать нативные SQL-запросы с Hibernate, но вам понадобится простой POJO, чтобы отобразить возвращаемое значение (на самом деле в этом случае вы можете попробовать некоторые из встроенных преобразователей или попробовать установить Projection, я не уверен, сработает или нет).

POJO возвращаемое значение:

public class MyCount {
    private Integer count;

    public void setCount(Integer count) {
        this.count = count;
    }    

    public Integer getCount() {
        return count;
    }
}

Запрос:

Query query = getSession().createSQLQuery("select count(*) from dual");
    .addScalar("count")
    .setResultTransformer(Transformers.aliasToBean(MyCount.class));

MyCount count = (MyCount) query.uniqueResult();
0 голосов
/ 23 марта 2011

Вы не можете выбрать что-то в HQL без запроса объекта.

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