でのようなキーワードとの契約を休止状態は、クエリsentence.This年代にのようなキーワードでDaoImplの小さなスニペットを扱うHibernateと最初にそれを見る方法についての躊躇に会いました!任意の疑いなしとコントローラの下にそれを使用します。{"src":"http://p0.meituan.net/350.214/deal/ac8ba922d7a6030325976fb31e51b4ce38985.jpg","resname":"哈哈派"}
方法ここでは、クエリ文
が、私はのようにして何かを修正せずにを使用して、このようなSQL文を変更します:
ここ
@RequestMapping(value = "/getFirst/{var}", produces = "application/json; charset=utf-8")
public @ResponseBody Site getFirst(@PathVariable String var){
String fr = "select * from Food f where f.resname = ?";
List<Site> siteList = siteService.findBySQL(fr, var);
Site first = siteList.get(0);
return first;
}
は結果であり、 String fr = "select * from Food f where f.resname like '%?%'"; List<Site> siteList = siteService.findBySQL(fr, var);
再デプロイと実行、例外が表示されます。
HTTP Status 500 - Request processing failed; nested exception is org.hibernate.QueryParameterException: Position beyond number of declared ordinal parameters. Remember that ordinal parameters are 1-based! Position: 1
しかし、私はそれがパラメータインデックスの問題だとは思わない、多分何かエラーまたはおそらくそのように使用することはできません?だから私はどのように冬眠のような "キーワード"を扱うのだろうか?
生の文字列 ''%%%'はパラメータを含むと認識されず、正しい動作です。値バインディングの代わりにパラメータを配置することはできますが、値バインディングの内部には配置できません。 – coladict
コントローラにSQLを作成しないでください:) – veljkost
@veljkostしかし、コントローラにSQLを作成しないと、getFirstメソッドで変数が必要です。作成する場所はどこですか? – Crabime