2010-06-10 71 views
1

我有两个实体,比如House和People,其中多个人可以住在一个房子里。如何使用其中一个属性查询对象ID为

这是一个单向链接,其中每个Person都有一个属于它的房屋的字段,所以Person表中有一个名为house_id的列。

我需要能够返回属于某个房屋的所有Person对象,但我只有房屋的ID。

可以就像这样:

House house = houseDAO.findById(houseId); 
List people = session.createCriteria(Person.class).add(Restrictions.eq("house", house)).list(); 

但因为我并不需要的房子,那就是把不必要的查询。我试过这样做:

session.createCriteria(Person.class).add(Restrictions.eq("house_id", houseId)).list(); 

但是这并不起作用,因为house_id不是属性,而是数据库列。 我可能只是添加一个SQL限制,但有没有冬眠的方式做到这一点?

回答

1

总是很容易忘记你正在使用HQL而不是SQL。我一直这样做。当使用HQL时,你想引用你正在处理的类的字段,而不是列名。

session.createCriteria(Person.class).add(Restrictions.eq("house.id", houseId)).list(); 
相关问题