java - 使用参数指定命名查询中的表达式

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

最佳答案

不,你不能。最终,HQL 参数成为 JDBC 准备好的语句参数,而使用准备好的语句则无法做到这一点。参数保存值,而不是查询的任意部分。数据库必须能够根据参数化查询计算查询计划,如果你想要做的事情被允许,这是不可能的。

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

关于java - 使用参数指定命名查询中的表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10641321/

相关文章:

java - 如何修复被忽略的嵌入对象中的验证约束?

java - JPA查询需要一些指导

java - 如何为数据库查找创建变量模式匹配?

java - hibernate命名查询

java - 我想使用 spy 来模拟方法,但我需要获得一些虚拟数据作为返回

java - 如何使用 datastore - google appengine 创建用户注册表单?

java - 如何将 bean 保存(持久化、序列化)到磁盘并在下次 Spring 运行时恢复(反序列化)它们?

java - 使用Java在linux系统上获取默认终端应用程序

java - 如何在jsp中打印列表列表和其他类型的数据

java - 我正在尝试执行以下查询并获取意外的 token : in exception