【问题标题】:How do I return a list of joined hibernate entities?如何返回加入的休眠实体列表?
【发布时间】:2013-09-18 19:22:01
【问题描述】:

假设我有一个 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

输出:

|标签 |计数 | |--------|--------| |食品| 2 | |店铺 | 1 |

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

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

谢谢!

【问题讨论】:

标签: java mysql hibernate


【解决方案1】:

查询:

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));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多