Java 如何在hibernate中从父表检索子表记录?

Java 如何在hibernate中从父表检索子表记录?,java,mysql,hibernate,exception,Java,Mysql,Hibernate,Exception,我正在进行Hibernate工作,其中有两个表,如Country和City 国家: Id int(20)不为空, CountryName int(30)不为空, 主键(Id) 城市: CId int(20)不为空, CityName varchar(30)不为空, 状态varchar(30)不为空, 添加约束cid外键(Country)引用id(id) 表示城市多对一映射到国家 现在我需要从国家访问城市详细信息 我已经创建了“Country.hbm.xml” 我已经创建了“City.hbm

我正在进行
Hibernate
工作,其中有两个表,如
Country
City

国家:

Id int(20)不为空,
CountryName int(30)不为空,
主键(Id)

城市:

CId int(20)不为空,
CityName varchar(30)不为空,
状态varchar(30)不为空,
添加约束
cid
外键(
Country
)引用
id
id

  • 表示
    城市
    多对一映射到
    国家
现在我需要从
国家访问
城市
详细信息

  • 我已经创建了“Country.hbm.xml”
  • 我已经创建了“City.hbm.xml”
查询:

从国家/地区中选择a.countryName、a.cities.cityName、a.cities.state作为

查询结果

org.hibernate.QueryException:非法尝试使用元素属性引用[cityName][从国家/地区中选择a.countryName、a.cities.cityName、a.cities.state取消引用集合[country0_u.Id.cities]

我不知道它为什么会出现这种异常…,如果有人知道,我将非常高兴


注意:我正在从您所在国家/地区的父实体中检索子实体详细信息。

像这样为城市定义@OneToMany映射。i、 一个国家可以有许多城市

@OneToMany(targetEntity = City.class, cascade = { CascadeType.ALL })
private List<City> cites;
@OneToMany(targetEntity=City.class,cascade={CascadeType.ALL})
私人名单;
然后,一旦加载国家,只需调用Country.getCities(),它将返回该国家的所有城市