【发布时间】:2009-09-24 12:30:54
【问题描述】:
我已经创建了我的实体类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 我有查询():
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。
为什么当我使用自己的实体类型时,此示例中的查询没有正确构建?如果我只使用整数和字符串,它们可以正常工作,但不能使用实体。如何使这样的联接与我自己的实体一起使用?
【问题讨论】:
标签: java database hibernate spring