【问题标题】:Using a parameter to specify an expression in a named query使用参数指定命名查询中的表达式
【发布时间】:2012-05-17 18:19:52
【问题描述】:

我可以使用查询参数在命名查询中指定表(对象)、列名或表达式吗?

例如,我想使用一个查询,它允许我在选择整个对象或只选择计数之间切换。

select :param1
from TablePO t
where t.id = :param2

在java中设置参数如下:

query.setParameter("param1", "t");
query.setParameter("param2", "2");

我想通过设置param1 来避免复制和粘贴

query.setParameter("param1", "t");

或

query.setParameter("param1", "count(t)");

【问题讨论】:

    标签: java hibernate named-query


    【解决方案1】:

    不,你不能。最后,HQL 参数变成了 JDBC 准备好的语句参数,而你不能用准备好的语句来做到这一点。参数保存值,而不是查询的任意部分。数据库必须能够根据参数化查询计算出查询计划,如果允许的话是不可能的。

    顺便说一句,如果您刚刚尝试过,您自己就会发现它。

    【讨论】:

    • 是的,我知道,问题是我的团队正在修改我的项目,目前无法正常工作......抱歉
    猜你喜欢
    • 1970-01-01
    • 2019-05-16
    • 1970-01-01
    • 2014-10-19
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    相关资源
    最近更新 更多