Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Hibernate Column name Parameter Binding

Tags:

hibernate

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.

like image 927
Mahdi Sadeghi Avatar asked Jul 07 '13 07:07

Mahdi Sadeghi


1 Answers

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.

like image 170
JB Nizet Avatar answered Sep 30 '22 16:09

JB Nizet