Playでクエリを実行する方法! IN状態のフレームワーク?IN条件のPlay Frameworkクエリ
String arrString[] = category.split(",");
List<String> listString = new ArrayList<String>();
for(int i=0; i<arrString.length; i++) {
listString.add(arrString[i]);
}
posts = Post.find(
"(category_id in (: cat)) AND (gender like?) AND (name like? OR description like?) AND isComplete is? " +
"order by created_date desc", gender, search, search, true
).bind("cat", listString).from(0).fetch(50);
私は単純に(使用することはできません。..
IllegalArgumentException occured : org.hibernate.hql.ast.QuerySyntaxException: cannot define positional parameter after any named parameters have been defined [from models.Post where (category_id in (:cat)) AND (gender like ?) AND (name like ? OR description like ?) AND isComplete is ? order by created_date desc]
と、これは私のコードは次のとおりです。私は、このリンクPlay Framework - How to Query a Model using 'IN'?からソリューションをたどってきましたが、私は違法Arugment例外エラーを取得しますか? )INの構文です。次のようになります:
posts = Post.find(
"(category_id in (?)) AND (gender like?) AND (name like? OR description like?) AND isComplete is? " +
"order by created_date desc", category, gender, search, search, true
).from(0).fetch(50);
どこが間違っていましたか?アドバイスをいただければ幸いです。
import play.db.helper.SqlQuery;
...
Set<String> categories = ...;
posts = Post.find("(category_id in "+SqlQuery.inlineParam(categories)+" AND ...")....fetch();