如何验证字段是否为GORM的空字符串?

时间:2015-09-04 16:16:49

标签: grails gorm

我有一个GORM查询,我需要避免使用可能是遗留系统问题的空字符串的字段。

目前,我的查询是:

def things = Thing.withCriteria{
    resultTransformer CriteriaSpecification.ALIAS_TO_ENTITY_MAP
    createAlias 'factor', 'f'
    eq 'active', true
    isNotNull 'title' // this field may be an empty string
    isNotNull 'content' // this field also may be an empty string
    // <-- and here I'd like to include sth like isEmpty 'title'
    not {
        inList 'f.id', factors
    }
    projections{
        property 'id'       , 'id'
        property 'f.name'   , 'name'
        property 'title'    , 'title'
        property 'content'  , 'content'
        property 'f.id'     , 'factorId'
    }           
}

我在文档中找不到任何解决方案,但我觉得这个解决方案应该是纯SQL。可能吗?有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您是否尝试将此声明添加到条件中?

ne title, ""

Grails标准依赖于hibernate Restrictions,因此支持的所有内容也可以用于grails标准。

否则您也可以使用sql restrictions (see Using SQL Restrictions section)

sqlRestriction "char_length(title) > 0"

请记住,title这里是指数据库中的真实列名。如果您想拥有更可靠的代码,可以在模型中包含字段的静态映射(列名称):

static mapping = {
     title column: 'title'
}

通过这种方式,您应该避免db特定命名行为(如果有)的错误。