Hibernate:HQL行计数子查询问题

时间:2011-03-22 18:01:42

标签: hibernate hql

我正在尝试在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 :(得分:0)

您无法在不查询实体的情况下在HQL中选择某些内容。

答案 1 :(得分:0)

你可以使用带有hibernate的本机SQL查询,但你需要一个简单的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();