2011-12-01 7 views
3

GrailsアプリケーションでGroovy SQLを使用して、アプリケーションのデータソースとして接続されていないデータベースに対してクエリを実行しています。ページのデフォルトでは、SQL select文にorder by句は含まれていません。ユーザーがタグの1つをクリックすると、指定した方向の指定された列をソートするようにクエリを動的に変更する必要があります。 select文にorder by節を追加しようとすると、クエリが不適切に終了したという(取得された)SQLExceptionが発生します。Groovy SQLは動的select文のorder by句を無視します

マイクエリ:

sql.eachRow("select * from mytable where type = 'SUMMARY' and acolumn=${columnValue} order by ${sortColumn} ${sortOrder}") { row -> 
        results << row.toRowResult() 
       } 

私はしかし、私はすべての可能であればSQL文でそれをしたいと思っ返されたリストをソートすることで問題を回避することができます。これは既知の問題ですか?

答えて

7

それGroovyのは?ですべてのあなたのparamsを交換しようとしているとあなたがuse Sql.expand

試してみる必要があるようにPreparedStatement

これは、ORDER BY句では動作しません作っている:

sql.eachRow("select * from mytable where type = 'SUMMARY' and acolumn=${columnValue} order by ${Sql.expand(sortColumn)} ${Sql.expand(sortOrder)}") { row -> 
    results << row.toRowResult() 
} 
+0

速やかなご返信ありがとうございます!解決策がかなり単純なものになると感じました。 –

+0

@ChrisDixいいえ心配:-)うれしいことに私は助けてくれました:-) –

関連する問題