You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hibernate中Having子句命名参数绑定失效问题求助

问题分析与解决

你的代码里存在变量名不匹配的低级错误:

  • 你创建的查询对象是idsq,但调用setParameter时用的是未定义的query变量,导致Hibernate根本没有处理你写的:mx参数,自然提示找不到该参数。

修正后的代码:

Long mx = 4;
SelectionQuery<Long> idsq = session.createSelectionQuery
(
        "select model.marca.firma.tara.id id from Automobil group by id having count(*)=:mx",
        Long.class);
idsq.setParameter("mx", mx); // 改为使用正确的查询对象调用setParameter
List<Long> ids = idsq.getResultList();

如果修正变量名后仍有问题,可排查以下两点:

  • 检查Hibernate版本:部分旧版本对HAVING子句的参数绑定支持存在瑕疵,建议升级至稳定版本。
  • 规范JPQL语法:group by id中的id是查询结果的别名,虽语法允许,但更严谨的写法是group by model.marca.firma.tara.id,避免解析歧义。

内容的提问来源于stack exchange,提问作者armagedescu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 00:55:00