我有一个Domain类
class Hashtag {
String tag
}
为什么
Hashtag.where { lower(tag) == "#london" }.list()
工作正常,但是
Hashtag.where { lower(tag) in [ "#london", "#paris" ] }.list()
结果是
org.springframework.dao.InvalidDataAccessResourceUsageException:在类型为[class java.lang.String]的属性[hashtag]的查询中定义的不支持的函数[lower]
如何正确编写这样的查询?
谢谢!
最佳答案 我无法回答为什么在()中使用lower()不起作用.我读了
source,但我不太了解AST,不能理解它.
但是,要解决您的问题,您可以使用derived property来执行lower().
class Hashtag {
String tag
String loweredTag
static mapping {
loweredTag formula: 'lower(tag)'
}
}
然后你可以在where查询中使用derived属性:
Hashtag.where { loweredTag in [ "#london", "#paris" ] }.list()