我已经创建了实体类 Adress
, Road
和 County
。一条Road
在一个County
中,一个Adress
位于一条Road
上。我想列出一个County
中所有的Adresses
。因此,在我的AdressService
中,我这样说:
public List<Adress> AllAdresses(County county) {
Adress adress = new Adress();
Road road = new Road();
road.setCounty(county);
adress.setRoad(road);
Example example = Example.create(adress);
return (List<Adress>) adressDAO.query(Adress.class, example);
}
在我的
AdressDAO
中,我有一个query()方法:public List query(Class<?> c, Example example) {
return getSession().createCriteria(c).add(example).setMaxResults(100).list();
}
这将在我的数据库服务器上执行以下查询:
select this_.AdressId as AdressId2_0_,
this_.Description as Descript3_2_0_,
this_.DescriptionShort as Descript4_2_0_,
this_.HouseLetter as HouseLetter2_0_,
this_.HouseNr as HouseNr2_0_,
this_.RoadId as RoadId2_0_
from tblAdress this_
where (this_.HouseNr=0)
limit 100
我原本期望它至少包含一些关于我的实体“County”以及与“tblRoad”进行内部连接的信息。 “tblRoad”具有一个主键“roadId”,因此我预期“this_.roadId”将与“tblRoad.roadId”连接,并且我预期“tblRoad.countyId”将设置为“County”的主键,即“countyId”。
为什么当我使用自己的实体类型时,此示例中的查询未正确构建?如果我只使用整数和字符串,则它们可以正常工作,但是实体无法正常工作。如何使类似这样的连接与我的实体一起工作?