我正在尝试使用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... **/ }
有什么问题?谢谢
答案 0 :(得分:1)
group by与返回组合在一起的相似行没有任何关系。当select子句使用聚合函数(如sum,min,max,count等)
时使用它例如,查询
select country.id, sum(city.id) from Country country left join country.cities city
返回每个国家/地区以及此国家/地区中包含的城市数量。
如果您只想按国家/地区分组城市,则只需order by
:
select city FROM DictionaryCity city JOIN city.country as country order by country.name ASC
将返回所有城市,你会首先找到阿塞拜疆的城市,然后是比利时的城市,然后是加拿大的城市等。