如何返回已连接的hibernate实体列表?

时间:2013-09-18 19:22:02

标签: java mysql hibernate

假设我在hibernate中有一个MySQL表和实体tag,其中tag是以下行中的一行

id (primary key), tag,    entity id
1,                food,   77
2,                shop,   98
3,                food,   32
...

我想返回以减少的条目数排序的相同标签的总计数。阿卡,

tag,     count
food,    2
shop,    1
...

我被告知要做类似

的事情
SELECT tag, COUNT(*) `count`
  FROM table1
 GROUP BY tag
 ORDER BY `count` DESC

输出:

|  TAG | COUNT |
|------|-------|
| food |     2 |
| shop |     1 |

但是,如何从Hibernate中读取这个新创建的实体列表?我是否需要以某种方式定义一个新对象才能读出这个列表?

同样的问题是读取已定义的实体(行),但只是作为查询的一部分与另一个实体连接。我如何读出结果?

谢谢!

1 个答案:

答案 0 :(得分:0)

查询:

String query = "SELECT tag, COUNT(*) as count "+
                "FROM table1 " +
                "GROUP BY tag " +
                "ORDER BY count DESC";

附加课程

public class Result  
{  
   private String tag;
   private int count;
   // getters/ setters
}

创建原生查询

  final Query nativeQuery = entityManager.createNativeQuery(query);
  final SQLQuery sqlQuery = (SQLQuery) ((HibernateQuery) nativeQuery ).getHibernateQuery(); 
  sqlQuery.addScalar("tag");
  sqlQuery.addScalar("count");
  sqlQuery.setResultTransformer(Transformers.aliasToBean(Result.class));