1


我有一个拥有许多汽车的用户实体。
我无法使用“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(如果是汽车,则为 Ids)。

4

1 回答 1

5

未定义用户别名。尝试

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 是包含汽车 ID 的集合(而不是第三次尝试中的字符串)。

于 2011-04-22T14:34:15.073 回答