Hibernate条件查询以获取特定列结果

Hibernate条件查询以获取特定列结果,hibernate,criteria,Hibernate,Criteria,我尝试使用条件获得单列结果,但我没有得到该结果的完美输出 Criteria criteria = session.createCriteria(GroupName.class) .setProjection(Projections.property("groupName")); criteria.createAlias("gcmUsers", "user").setResultTransformer( Criteria.DISTI

我尝试使用条件获得单列结果,但我没有得到该结果的完美输出

Criteria criteria =  session.createCriteria(GroupName.class)
        .setProjection(Projections.property("groupName"));
        criteria.createAlias("gcmUsers", "user").setResultTransformer(
                Criteria.DISTINCT_ROOT_ENTITY);
        criteria.add(Restrictions.eq("user.clientName", userName));
        groupNames=criteria.list();

 i am getting this output :

Default, Default, Default, Default, Default, Default, twiter_grp


but my actual output is :
Default, twiter_grp,friends

您可以使用Projections.distinct方法

Criteria criteria =  session.createCriteria(GroupName.class)
        .setProjection(Projections.distinct(Projections.property("groupName")));
        criteria.createAlias("gcmUsers", "user").setResultTransformer(
                Criteria.DISTINCT_ROOT_ENTITY);
        criteria.add(Restrictions.eq("user.clientName", userName));
        groupNames=criteria.list();

您可以使用Projections.distinct方法

Criteria criteria =  session.createCriteria(GroupName.class)
        .setProjection(Projections.distinct(Projections.property("groupName")));
        criteria.createAlias("gcmUsers", "user").setResultTransformer(
                Criteria.DISTINCT_ROOT_ENTITY);
        criteria.add(Restrictions.eq("user.clientName", userName));
        groupNames=criteria.list();

因此,最终您将面临两个问题:1。你没有得到明显的结果&2。您没有在输出中获得
朋友
。是吗?是的,我面临两个问题。你能用数据显示表吗?请看:gcmUserstable和GroupName具有多对多关系。用户名是admin,组表的数据是Default,twitter\u grp,friendsgroup名称,所以最终您将面临两个问题:1。你没有得到明显的结果&2。您没有在输出中获得
朋友
。是吗?是的,我面临两个问题。你能用数据显示表吗?请看:gcmUserstable和GroupName具有多对多关系。用户名是admin,组表的数据是Default,twitter\u grp,friendsgroup name