Hibernate (HQL) - как запросить "где много в ()" много ко многим - PullRequest
1 голос
/ 22 апреля 2011


У меня есть пользовательский объект, у которого много машин.
Я не могу выбрать пользователя по списку машин с заявлением «IN».

List<Car> cars = getCarsList();
String hql = "From User WHERE user.cars in(:cars)";
Query query = session.createQuery(hql)
query.setParameterList("cars",cars);
//query.setParameterList("cars",cars.toArray());//not working also
//query.setParameter("cars","1,4,8,30");//not working also
query.setMaxResults(1);

Таким образом, параметр игнорирует автомобили.
У меня также пытается отправить vars.toArray ();
И я также пытался отправить строку 1,4,8,300 (идентификаторы, если автомобили).

1 Ответ

5 голосов
/ 22 апреля 2011

Псевдоним пользователя не определен.Попробуйте с

String hql = "from User user inner join user.cars car where car.id in (:carIds)";
Query query = session.createQuery(hql)
query.setParameterList("cars", carIds);

, где carIds - это коллекция (а не строка, как в вашей третьей попытке), содержащая идентификаторы автомобилей.

...