-2

我正在尝试在 grails 应用程序中使用 createCriteria 从数据库返回一些行。我没有得到任何结果。

def query = {
    ilike('fullName','%${params.term}%')
    projections {
        property('id')
        property('fullName')
    }   
}

def plist = Patient.createCriteria().list(query) 
def patientSelectList = []
plist.each {
    def pMap = [:] 
    pMap.put("id", it[0])
    pMap.put("label", it[1])
    pMap.put("value", it[1])
    patientSelectList.add(pMap) 
}

我正在寻找的字段存在,因为以下代码段返回结果但速度很慢。

def patientList = Patient.getAll()
def patientSelectList = []
patientList.each { patient ->
    if (patient.fullName.toLowerCase().contains(params.term.toLowerCase()) ) {
        def pMap = [:]
        pMap.put("id", patient.id)
        pMap.put("label", patient.fullName)
        patientSelectList.add(pMap)
    }
 }
return patientSelectList

谢谢你的帮助

我用 jasypt 加密了我的 Db 字段。删除我需要查询的字段上的加密解决了这个问题!

4

1 回答 1

0

您在参数中使用的是 a而String不是 a ,因此没有被评估。要使用 a ,请改用双引号。GStringilike()params.termGString

ilike('fullName',"%${params.term}%")

还要确保%您的数据库是一个适当的通配符(可能是)。

于 2015-10-23T16:36:12.003 回答