hibernate - Grails命名查询NOT IN

试图提出一种简洁的方法来创建带有NOT IN子句的命名查询。限制类似乎没有“not in”构造。有人知道这样做的好方法吗?

解决方案:

static namedQueries = {
        activeOnly {
            eq 'active', true
        }
        open {
            ne 'state', this.STATE_COMPLETED
        }
        my { user ->
            or {
                eq 'createdBy', user
                eq 'reviewer', user
                eq 'assignee', user
                eq 'requestedFor', user
                ilike 'notifyList', "%$user%"
            }
        }
        topLevel {
            not {'in'('type', [RequestType.Part])}
        }
    }

注意:“in”一词必须加引号,因为它是保留的。

这些命名查询可以这样使用:
Request.activeOnly.open.topLevel.list(params)

最佳答案

也许像这样冒昧:

Book.findAll("from Book b where b.author not in (?)", ['Borges', 'Sabato', 'Cortazar'])

或使用标准
Book.withCriteria {
    not {
        'in'('author', ['Borges', 'Sabato', 'Cortazar'])
    }
}

http://grails.org/doc/1.3.x/ref/Domain%20Classes/createCriteria.html-“in”标准方法的文档也具有链接的“not”方法。

https://stackoverflow.com/questions/10002796/

相关文章:

mongodb - 使用迭代动态构建条件 block

json - 在Grails中编码Joda LocalTime

grails - 如何在grails中进行网络搜索

grails - Spock测试用例与Grails中的域类没有关系吗?

grails - grails从 Controller 返回xml字符串

spring - 是否使用基于注释的AOP修改 Controller 响应?

grails - 无法从Grails连接到MySQL

grails - Grails Spring安全性插件镜像访问控制

javascript - 将Javascript函数与Grails应用程序集成

grails - 下拉菜单中的 Twitter Bootstrap 模式