Hibernate(HQL)-如何查询“多对多”

fat*_*zzy 1 many-to-many hibernate where-in


我有一个拥有很多汽车的用户实体。
我无法使用“ 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);
Run Code Online (Sandbox Code Playgroud)

这样,该参数将忽略汽车。
我也尝试发送vars.toArray();
而且我还尝试发送String 1,4,8,300(如果是汽车,则为ID)。

JB *_*zet 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);
Run Code Online (Sandbox Code Playgroud)

其中carIds是包含汽车ID的集合(而不是您的第三次尝试中的字符串)。