0

我正在尝试在 grails 中运行查询,而我想要过滤的字段之一是 mysql 中的 datetime 类型。我试过这样做:

def formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
def timeNow = formatter.format(new Date())
foundUsers = User.executeQuery("from User u where u.username LIKE '%"+params.searchStr+"%' and u.enabled =1 and u.expiration_date>"+timeNow,[max:20])

但这给了我一个错误:意外令牌!我无法更改域用户和数据库,因为它们很旧并且包含实时数据。那么我该怎么做呢?

4

2 回答 2

2
  1. 我相信意外的令牌是因为 '>' 在 u.expiration_date 之后
  2. 您的代码不保存用于 sql 注入。
  3. 你的鳕鱼应该是这样的

    def foundUsers= User.findByUsernameLikeAndEnabledAndExpiration_date('%params.searchStr%',1,timeNow)

阅读有关动态查找器的更多信息

http://grails.org/doc/latest/guide/GORM.html#querying

于 2012-05-04T07:37:38.363 回答
0

试试这个:

    foundUsers = User.executeQuery("from User u where u.username LIKE ? and u.enabled = 1 and u.expiration_date > ?",['%params.searchStr%', timeNow],[max:20])
于 2012-05-04T05:26:05.153 回答