Hibernate列名参数绑定 [英] Hibernate Column name Parameter Binding

查看:53
本文介绍了Hibernate列名参数绑定的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


$ b

  // colname = AdminsInfo.name;假设它来自方法的输入
// colval = input.getName()。toString(); //假定它来自方法的输入

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(来自AdminsInfo,其中:coln =:colv)
Hibernate:选择adminsinfo0_.Row作为Row1_0_,adminsinfo0_。 ID为ID2_0_,adminsinfo0_.Name为Name3_0_,... where?=?

有关如何在HQL语句中绑定列名的帮助,谢谢。 Mahdi。

解决方案

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


I am binding Named Parameters in a HQL statement, but it just doesn't get filled.

//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());        

it outputs something like this which means parameters (coln, colv) are not set and returns 0 records.

QueryImpl(from AdminsInfo where :coln = :colv)
Hibernate: select adminsinfo0_.Row as Row1_0_, adminsinfo0_.ID as ID2_0_,adminsinfo0_.Name as Name3_0_, ... where ?=?

Any help on how to bind column names in HQL statements are appreciated. Thanks. Mahdi.

解决方案

You can't bind a column name as a parameter. Only a column value. This name has to be known when the execution plan is computed, before binding parameter values and executing the query. If you really want to have such a dynamic query, use the Criteria API, or some other way of dynamically creating a query.

这篇关于Hibernate列名参数绑定的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆