我可以使用查询参数在命名查询中指定表(对象)、列名或表达式吗?
例如,我想使用单个查询,允许我在选择整个对象或仅选择计数之间切换。
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)");
最佳答案
不,你不能。最终,HQL 参数成为 JDBC 准备好的语句参数,而使用准备好的语句则无法做到这一点。参数保存值,而不是查询的任意部分。数据库必须能够根据参数化查询计算查询计划,如果你想要做的事情被允许,这是不可能的。
顺便说一句,如果您尝试过,您自己就会发现它。
关于java - 使用参数指定命名查询中的表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10641321/