我有两个实体,比如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方式吗?
答案 0 :(得分:1)
总是很容易忘记你正在使用HQL,而不是SQL。我一直这样做。使用HQL时,您希望引用要处理的类的字段,而不是列名。
session.createCriteria(Person.class).add(Restrictions.eq("house.id", houseId)).list();