grails - Grails-如何在查询前替换属性?

标签 grails gorm

我有以下内容:

 myQuery { Map paramsMap, List<MyObject> objectList = null ->
            and {
                if (paramsMap.firstName) {
                    ilike('firstName', paramsMap.firstName + "%")
                }
                if (paramsMap.phone) {
                    ilike('phone', paramsMap.phone + "%")
                }
            }
 }

一切正常。问题是电话可以存储为123-123-1234或9876543210。

当我们进入搜索屏幕时,如果用户查找1231231234,他将不会获得任何结果,因为该人用破折号保存了电话号码。同样,如果用户尝试查找电话为987-654-3210,他将找不到任何东西,因为用户保存时未用破折号表示。

无论如何有这样的搜索
ilike(phone.replace("-", ""), paramsMap.phone.phone.replace("-", "") + "%")

这样,它将正常工作。

有人知道在grails查询之前替换破折号的任何方法吗?

最佳答案

好,

我在这里找到此解决方案:

 if (paramsMap.phone) {
                    String phoneNumber = paramsMap.phone.replace("-", "")
                    sqlRestriction("replace(phone, '-', '') like '%$phoneNumber%'")
                }

而是
 if (paramsMap.phone) {
                    ilike('phone', paramsMap.phone + "%")
                }

这样,我一直都能得到结果。

关于grails - Grails-如何在查询前替换属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31010305/

相关文章:

sorting - Grails排序让我很难受

Grails 从父域模型更新一对多

grails - 我可以使用groovy 1.7 beta 1运行grails 1.2-M3吗?

oracle - Grails何时向对象分配ID?

grails - 是什么让 Groovy+Grails 成为比 Java EE 更高效的设置?

validation - grails-验证继承的域类属性

grails - Grails-自引用关系

grails - 将grails hasMany从LinkedHashSet更改为ArrayList

grails - Grails:findAllByTitle()作为搜索功能?