如何使用其属性的id查询对象

时间:2010-06-10 15:48:21

标签: hibernate

我有两个实体,比如House和People,多个人可以住在一个房子里。

这是一个单向链接,其中每个Person都有一个他们所属的House的字段,因此Person表有一个名为house_id的列。

我需要能够返回属于某个House的所有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限制,但是有一种hibernate方式吗?

1 个答案:

答案 0 :(得分:1)

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

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