Hibernate 列名参数绑定(bind)

标签 hibernate

我在 HQL 语句中绑定(bind)命名参数,但它只是没有被填充。

//colname = "AdminsInfo.name"; assume it is from method's input
//colval = input.getName().toString(); // assume it is from method's input

String query = "from AdminsInfo where :coln = :colv";
Query q = session.createQuery(query);
q.setParameter("coln",colname);
q.setParameter("colv",colval);

System.out.println(q.toString());        

它输出类似这样的内容,这意味着未设置参数(coln,colv)并返回 0 条记录。
QueryImpl(from AdminsInfo where :coln = :colv)
Hibernate: select adminsinfo0_.Row as Row1_0_, adminsinfo0_.ID as ID2_0_,adminsinfo0_.Name as Name3_0_, ... where ?=?

任何有关如何在 HQL 语句中绑定(bind)列名的帮助表示赞赏。谢谢。马赫迪。

最佳答案

您不能将列名绑定(bind)为参数。只有一个列值。在计算执行计划、绑定(bind)参数值和执行查询之前,必须知道该名称。如果您真的想要这样的动态查询,请使用 Criteria API 或其他动态创建查询的方式。

关于Hibernate 列名参数绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17510034/

相关文章:

java - Oracle 11g 中的 Hibernate 和 DOUBLE

java - 如何从没有主键的连接表中创建实体

java - Hibernate SQLQuery 列表方法返回对象而不是对象数组

java - 构建hibernate实体时如何处理双向关系?

java.lang.NoClassDefFoundError : io/dropwizard/jetty/RequestLogFactory when using dropwizard

hibernate - 在Hibernate中映射本地化的字符串-有什么最佳实践吗?

java - 不标记事务划分,只是通过session加载一个实体

spring - 带有@Audited 的基本模型

hibernate - JPA/Hibernate 是逆向工程好还是正向工程好

java - HibernateTemplate 通过 TaskExecutor 调用时未获取对象