Hibernate 休眠:分组方式

Hibernate 休眠:分组方式,hibernate,hql,Hibernate,Hql,我试图用java+spring+hibernate+jasper报告打印一些按国家分组的城市列表,但在填充分组的城市列表时遇到了一些问题 我有以下疑问: Query query = session.createQuery("SELECT city FROM DictionaryCity city JOIN city.country as country GROUP BY country ORDER BY country.name ASC"); 它总是返回一个城市列表,但具有1x1连接,但Dic

我试图用java+spring+hibernate+jasper报告打印一些按国家分组的城市列表,但在填充分组的城市列表时遇到了一些问题

我有以下疑问:

Query query = session.createQuery("SELECT city FROM DictionaryCity city JOIN city.country as country GROUP BY country ORDER BY country.name ASC");
它总是返回一个城市列表,但具有1x1连接,但
DictionaryCity
类定义如下:

@Entity
@Table(name = "dictionarycities")
public class DictionaryCity implements IDictionary {
    /**
     * 
     */
    private static final long serialVersionUID = 3638441397996216204L;

    /**
     * 
     */
    @Id
    @Column(name = "Id")
    @GeneratedValue
    private Long id = null;

    /**
     * 
     */
    @Column(name = "Name")
    private String name;

    /**
     * 
     */
    @ManyToOne(targetEntity = DictionaryCountry.class)
    @JoinColumn(name = "CountryId")
    private DictionaryCountry country; /** other... **/ }

怎么了?谢谢

分组依据与返回分组在一起的类似行无关。当select子句使用聚合函数(如sum、min、max、count等)时,将使用它

例如,查询

select country.id, sum(city.id) from Country country left join country.cities city
返回每个国家以及该国家包含的城市数

如果您只想按国家划分城市组,
orderby
就是您所需要的:

select city FROM DictionaryCity city JOIN city.country as country order by country.name ASC

将返回所有城市,您将首先找到阿塞拜疆的城市,然后是比利时的城市,然后是加拿大的城市,等等。

生成的SQL是什么?