如何在使用java和hibernate的mysql中按组计算行数?

如何在使用java和hibernate的mysql中按组计算行数?,java,mysql,hibernate,count,Java,Mysql,Hibernate,Count,我有一个数据库“javachat”,有一个表和两列。 其中一列称为“昵称”,第二列称为“帖子”,因此看起来像: nick1 post1 nick2 post2 nick1 post3 nick2 post4 现在:我需要计算每个昵称写了多少篇文章(我必须计算我在数据库中有多少昵称以及它们出现的次数)。知道昵称也很重要,因为我想用昵称和帖子数量创建图表 也许这个问题很愚蠢,但我找不到任何东西。我现在写的代码只是为了连接到数据库,我现在不知道该怎么做 private ???????? downSt

我有一个数据库“javachat”,有一个表和两列。 其中一列称为“昵称”,第二列称为“帖子”,因此看起来像:

nick1 post1
nick2 post2
nick1 post3
nick2 post4
现在:我需要计算每个昵称写了多少篇文章(我必须计算我在数据库中有多少昵称以及它们出现的次数)。知道昵称也很重要,因为我想用昵称和帖子数量创建图表

也许这个问题很愚蠢,但我找不到任何东西。我现在写的代码只是为了连接到数据库,我现在不知道该怎么做

private ???????? downStats() {
        try{
        Session sess = HibernateUtil.getSessionFactory().openSession();
        Transaction tx = sess.beginTransaction();


        tx = null;
        sess.disconnect();

    }
              catch (HibernateException e) {
        if (tx!=null) tx.rollback();
        e.printStackTrace();
        textArea.append("Sorry - could connect to the database!");

    }
    }

有什么想法吗?提前感谢您的提示。

假设您的表名为
table

select name, count(post) from Table group by name;


这就是我如何得到您的问题的,如果我答错了,请用预期结果更新您的问题。

请尝试以下查询

SELECT COLUMN-NAME-OF-NICKNAMES, COUNT(1) FROM TABLENAME GROUP BY COLUMN-NAME-OF-NICKNAMES

这将返回每个昵称和帖子数。

以下是您必须使用的相关SQL查询:

"SELECT nickname, count(*) FROM my_table GROUP BY nickname"
现在,您需要使用Hibernate进行此操作

sess.createCriteria(MyTable.class)       
    .setProjection(Projections.projectionList()
                   .add(Projections.groupProperty("nickname"))
                   .add(Projections.count("someColumn"))           
    ).list();

看看。

您创建了实体类吗?groupProperty-我知道这是列的名称,但count-someColumn?我不明白。很抱歉,您应该用“posts”或“1”替换“someColumn”,以返回posts的计数或检索到的行的计数。任何一种方法都将返回正确的值。