Grails Gorm引用了一个属性';指定查询中的s(列';s)值?

Grails Gorm引用了一个属性';指定查询中的s(列';s)值?,grails,groovy,gorm,named-query,Grails,Groovy,Gorm,Named Query,所以。。。有没有办法做到这一点 class Kitty { String name String nickName public static String getExpectedNickname(String name) { return name.replaceAll('Mr. ', '') } static namedQueries = { byKityWithPredictableNickname {

所以。。。有没有办法做到这一点

class Kitty {
    String name
    String nickName
    public static String getExpectedNickname(String name) {
        return name.replaceAll('Mr. ', '')
    }
    static namedQueries = {
        byKityWithPredictableNickname {
            ilike 'name', '%Kitty%'
            ilike 'nickName', Kitty.getExpectedNickname('name')
        }
    }
}
我能否以某种方式引用当前行的列值?我原以为财产(“名称”)会管用,但唉,不行

编辑:

另一个例子:我认为像这样的东西会有用。。。但事实并非如此:(

相反,我得到了一些愚蠢的非法参数异常:

java.lang.ClassCastException@2af65a43. Stacktrace follows:
Message: java.lang.ClassCastException@2af65a43
    Line | Method
->>   -1 | invoke                                in sun.reflect.GeneratedMethodAccessor327
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|     43 | invoke                                in sun.reflect.DelegatingMethodAccessorImpl
|    606 | invoke . . . . . . . . . . . . . . .  in java.lang.reflect.Method
|   1254 | jlrMethodInvoke                       in org.springsource.loaded.ri.ReflectiveInterceptor
|     90 | invoke . . . . . . . . . . . . . . .  in org.codehaus.groovy.reflection.CachedMethod
|     57 | getProperty                           in groovy.lang.MetaBeanProperty
...

我认为唯一的方法是通过
sqlRestriction

//...
static namedQueries = {
    findAllKitty {
        ilike 'name', '%Kitty%'
    }

    findAllByNickNameLikeName {
        sqlRestriction "nick_name like '%' || replace(name, 'Mr. ', '') || '%' "
    }
}

//to use:
Kitty.findAllByNickNameLikeName().list()

SQL语法可能会根据您使用的数据库而改变。

我不确定我是否遵循……为什么您拥有所有(“%”)数据或者ed两次?并且不会替换返回字符串而不是布尔值?我已经用一个额外的示例编辑了我的原始问题,说明了我希望能够实现的功能。根据您的示例,您希望所有对象都
昵称为ilike name(-'Mr.)
,这就是namedQuery
findAllByNickNameLikeName
所做的。我只是把
“%”
作为一个例子,但是下面的方法也会起作用:
sqlRestriction“nick\u name like replace(name,'Mr.,''”
//...
static namedQueries = {
    findAllKitty {
        ilike 'name', '%Kitty%'
    }

    findAllByNickNameLikeName {
        sqlRestriction "nick_name like '%' || replace(name, 'Mr. ', '') || '%' "
    }
}

//to use:
Kitty.findAllByNickNameLikeName().list()