CountBy WithCriteria与

时间:2015-06-30 05:55:36

标签: grails gorm

使用countBy(或动态查找程序)不会给出结果,但是带有标准的结果。

这是班级:

class Message {

    EntityType entityType
    String code

}

然后:

assert 1 == Message.countByCodeAndEntityType("category.name.${result.id}", EntityType.APPLICATION_TEXT)

返回0(假断言),但......

assert 1 == Message.createCriteria().list(){
            eq ("code", "category.name.${result.id}")
            eq ("entityType",EntityType.APPLICATION_TEXT)
            projections{
                count()
            }
        }[0]

返回正确的结果1

是什么原因?

2 个答案:

答案 0 :(得分:0)

您是否检查过两种变体中是否正确解析了$ {result.id}?

如何查看SQL?

对于Counting,我更喜欢这个:

Message.createCriteria().count(){
    eq ("code", "category.name.${result.id}")
    eq ("entityType",EntityType.APPLICATION_TEXT)
}

答案 1 :(得分:0)

请参阅文档:https://grails.github.io/grails-doc/latest/ref/Domain%20Classes/createCriteria.html

count 返回给定属性名称的计数

所以你需要在投影中使用rowCount() 享受!)