如何在 Play 中执行查询!具有 IN 条件的框架?我已经按照此链接中的解决方案Play Framework - How to Query a Model using 'IN'? ,但我收到一个非法参数异常错误:
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]
这是我的代码..
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);
我不能简单地为 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();
关于playframework - 使用 IN 条件 Play Framework 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9512202/