假设我在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中读取这个新创建的实体列表?我是否需要以某种方式定义一个新对象才能读出这个列表?
同样的问题是读取已定义的实体(行),但只是作为查询的一部分与另一个实体连接。我如何读出结果?
谢谢!
答案 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));