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

发布于 2024-11-02 18:08:09 字数 488 浏览 2 评论 0原文


我有一个拥有许多汽车的用户实体。
我无法使用“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);

这样,参数是 cars 就被忽略了。
我也尝试发送 vars.toArray();
我还尝试发送字符串 1,4,8,300(如果是汽车,则为 ID)。

I have a user entity that has many cars.
I cant fetch the user by car list with "IN" statement.

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);

In this way, the parameter is cars being ignored.
I have also tries to send vars.toArray();
And I also tried to send String 1,4,8,300 (Ids if cars).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无力看清 2024-11-09 18:08:09

未定义用户别名。尝试使用

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

The user alias is not defined. Try with

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

where carIds is a collection (and not a string as in your third try) containing the IDs of the cars.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文