由于我无法使用Hibernate createCriteria实现所需的查询,因此我坚持使用常见的Mysql连接。但是当我使用参数化查询时,由于某种原因,查询的一部分失败了。
返回数据源连接的代码是
def getSqlInstance(){
def conn = dataSource.connection
Sql sql = new Sql(conn)
return sql;
}
当我使用以下形式的变体查询时
def conn = getSqlInstance();
def result = conn.rows("select distinct u.user_id from user_role u inner join (select id from role where authority like %:roles% )r on u.role_id = r.id",params)
我得到以下异常
您的SQL语法有误。检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第1行的u.role_id = r.id'上使用'%')r附近。
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:SQL语法有错误;检查与您的MySQL服务器版本对应的手册以获取正确的语法,以在第1行的u.role_id = r.id'上使用'%')r附近
有人可以帮忙吗
最佳答案
另一个解决方案是基于SQL的
def result = conn.rows("select distinct u.user_id from user_role u inner join
(select id from role where authority like
concat('%',:roles,'%') ) r on u.role_id = r.id",
params)
关于sql - 在grails准备好的语句上使用like时引发异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22810372/