8

HQL ステートメントで名前付きパラメーターをバインドしていますが、入力されません。

//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 ステートメントで列名をバインドする方法についてのヘルプをいただければ幸いです。ありがとう。マフディ。

4

2 に答える 2

11

列名をパラメーターとしてバインドすることはできません。列の値のみ。この名前は、パラメーター値をバインドしてクエリを実行する前に、実行計画が計算されるときに既知である必要があります。このような動的クエリが本当に必要な場合は、Criteria API を使用するか、クエリを動的に作成する他の方法を使用してください。

于 2013-07-07T07:30:25.853 に答える