使用参数在命名查询中指定表达式

时间:2012-05-17 18:19:53

标签: java hibernate named-query

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

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

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

1 个答案:

答案 0 :(得分:4)

不,你不能。最后,HQL参数成为JDBC预处理语句参数,而您无法使用预处理语句执行此操作。参数保存值,而不是查询的任意部分。数据库必须能够根据参数化查询计算查询计划,如果允许您执行的操作,则无法进行查询计划。

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