【问题标题】:java.lang.IllegalArgumentException: org.hibernate.QueryParameterException: could not locate named parameter [taskPackageId]java.lang.IllegalArgumentException:org.hibernate.QueryParameterException:找不到命名参数[taskPackageId]
【发布时间】:2015-10-21 23:38:33
【问题描述】:
IF (((SELECT COUNT(*) FROM com.abc.domain.dcm.Program AS p
                    INNER JOIN p.programServiceLevelConfigs AS pslc
                    INNER JOIN pslc.taskPackages AS taskPackages
                    WHERE taskPackages.id = :taskPackageId) > 0) OR
            ((SELECT COUNT(*) from com.abc.domain.dcm.HcsEnrollmentBhpSetup hbs
                    INNER JOIN hbs.taskPackageMap
                    WHERE elements(hbs.taskPackageMap.id) = :taskPackageId) > 0))
        SELECT 1
    ELSE
        SELECT 0

我正在设置查询参数:

query.setParameter("taskPackageId", taskPackageId);

在执行上述 HQL 查询时,我得到以下异常堆栈跟踪:

java.lang.IllegalArgumentException: org.hibernate.QueryParameterException: could not locate named parameter [taskPackageId]
at org.hibernate.ejb.QueryImpl.setParameter(QueryImpl.java:379)
at org.hibernate.ejb.QueryImpl.setParameter(QueryImpl.java:72)

非常感谢任何帮助。

【问题讨论】:

  • 你能展示整个代码吗?
  • 这是所有相关代码。我的 HQL 嵌入在 xml 文件中。

标签: java hibernate


【解决方案1】:

您不能在 HQL 中使用 if...else 语句。可能是CASE expression 会帮助你。

【讨论】:

猜你喜欢
  • 2015-03-29
  • 2020-06-04
  • 2012-09-08
  • 2012-11-03
  • 2017-11-21
  • 2016-10-21
  • 2013-09-11
  • 2017-12-30
  • 1970-01-01
相关资源
最近更新 更多