我想像这样执行我的HQL查询:

Query queryPayment=sixSession.createQuery("SELECT first_name, last_name FROM Table1 WHERE first_name =:f_name or last_name=:l_name ORDER BY
   CASE WHEN first_name =:f_name THEN 0 ELSE 1 END)
        .setParameter("first_name", f_name)
        .setParameter("last_name", l_name);


但它不起作用。我错过了什么吗?

最佳答案

参数的名称f_namel_name。改变这个

setParameter("first_name", f_name)
.setParameter("last_name", l_name)


对此

setParameter("f_name", f_name)
.setParameter("l_name", l_name)


您不能在ORDER BYuse named parameters。但是您可以使用String.format()放置它。

09-08 12:12