0

Grails でクエリを実行しようとしていますが、フィルタリングしたいフィールドの 1 つが mysql の日時型です。私はこれをやってみました:

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 に答える