具有多个关系的表的 Hibernate 条件
Hibernate Criteria for tables with more than one relationsship
我有一个包含两个表(城市、国家/地区)和它们之间的两个关系的数据库。
第一个是 "a country has multiple cities" 关系。
select * from City inner join Country on(code=countrycode);
第二个是"a country has one capital"关系。
select * from City inner join Country on(capital=id);
Hibernate 标准适用于第一个关系,例如
Criteria criteria = session.createCriteria(City.class);
List<City> = criteria
.createCriteria("countrycode")
.add(Restrictions.eq("continent", continent))
.list();
但是我如何创建 Hibernate 条件来检索大写字母列表?第二个关系是未映射的。 Hibernate 是否支持这种关系?
城市class:
@Entity
public class City {
@Id
@Column(name = "ID", updatable = false, nullable = false)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
...
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "countrycode", nullable = false)
private Country countrycode;
...
国家class:
@Entity
public class Country {
@Id
private String code;
@OneToMany(targetEntity = City.class, mappedBy = "countrycode")
private Set<City> cities;
private Integer capital;
...
城市是否为任何国家的首都的信息必须在城市内。向城市添加一个布尔字段,这样查询:
List<City> = session.createCriteria(City.class)
.createCriteria("countrycode")
.add(Restrictions.eq("continent", continent))
.add(Restrictions.eq("capital", true))
.list();
我有一个包含两个表(城市、国家/地区)和它们之间的两个关系的数据库。
第一个是 "a country has multiple cities" 关系。
select * from City inner join Country on(code=countrycode);
第二个是"a country has one capital"关系。
select * from City inner join Country on(capital=id);
Hibernate 标准适用于第一个关系,例如
Criteria criteria = session.createCriteria(City.class);
List<City> = criteria
.createCriteria("countrycode")
.add(Restrictions.eq("continent", continent))
.list();
但是我如何创建 Hibernate 条件来检索大写字母列表?第二个关系是未映射的。 Hibernate 是否支持这种关系?
城市class:
@Entity
public class City {
@Id
@Column(name = "ID", updatable = false, nullable = false)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
...
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "countrycode", nullable = false)
private Country countrycode;
...
国家class:
@Entity
public class Country {
@Id
private String code;
@OneToMany(targetEntity = City.class, mappedBy = "countrycode")
private Set<City> cities;
private Integer capital;
...
城市是否为任何国家的首都的信息必须在城市内。向城市添加一个布尔字段,这样查询:
List<City> = session.createCriteria(City.class)
.createCriteria("countrycode")
.add(Restrictions.eq("continent", continent))
.add(Restrictions.eq("capital", true))
.list();