使用 Grails 2.3.0:根据文档: http: //grails.org/doc/latest/ref/Domain%20Classes/createCriteria.html
Eq
可以使用第三个参数创建不区分大小写的标准[ignoreCase: true]
。像这样:
eq(field, string, [ignoreCase: true])
但是,这会引发错误:
No signature of method: grails.gorm.DetachedCriteria.eq() is applicable for argument types: (java.lang.String, java.lang.String, java.util.LinkedHashMap) values: [xx, yy, [ignoreCase:true]]
Possible solutions: eq(java.lang.String, java.lang.Object), get(), grep(), any(), ge(java.lang.String, java.lang.Object), gt(java.lang.String, java.lang.Object). Stacktrace follows:
这个 Jira说明了 MongoDB 的一个问题。我正在使用 Oracle 11G,我遇到了完全相同的事情。
文档中的操作是否真的完全支持(翻看代码,好像不是……)?这是否也不适用于 DetachedCriterias(在文档中找不到其他内容......)?
代码片段:
public DetachedCriteria createCriteriaForArbejdssted(SoegeCommand command, DetachedCriteria criteria) {
criteria = criteria.build {
if(command.harArbejdsstedskriterier()) {
'arbejdsstedsPerioder' {
'arbejdssted' {
if(command.arbejdsstedsnavn) { eq('navn', command.arbejdsstedsnavn, [ignoreCase: true])}
}
}
}
}