playframework - 使用 IN 条件 Play Framework 查询

标签 playframework conditional-statements

如何在 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/

相关文章:

java - 如何在 Play Framework 模板中使用我自己的 Iterable

java - 每次在多对多关系中插入新数据时,以前的数据都会被删除

javascript - 我正在尝试将一个类添加到具有禁用类的 li 标记

Java条件问题

language-agnostic - 为什么条件运算符不能用作语句

scala - 如何使用play的表单验证来检查密码是否匹配

testing - play 2.5 render view 测试,获取flash messages

java - 使用 Play Framework 在页面中显示选项列表

powershell - 从IF ELSE语句输出到管道

c# - 如果两个条件之一为真,则结束协程