Как вы можете запросить объект, используя идентификатор одного из его свойств - PullRequest
1 голос
/ 10 июня 2010

У меня есть две сущности, скажем, Дом и Люди, в которых несколько людей могут жить в одном доме.

Это однонаправленная ссылка, где у каждого Человека есть поле, к которому принадлежит Дом, поэтому таблица Personесть столбец с именем house_id.

Мне нужно иметь возможность вернуть все объекты Person, принадлежащие определенному дому, но у меня есть только идентификатор дома.

This Можно ли сделать так:

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 Ответ

1 голос
/ 10 июня 2010

Всегда легко забыть, что вы работаете с HQL, а не с SQL. Я делаю это все время. При использовании HQL вы хотите ссылаться на поля класса, с которым имеете дело, а не на имена столбцов.

session.createCriteria(Person.class).add(Restrictions.eq("house.id", houseId)).list();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...