【发布时间】:2018-12-15 19:46:56
【问题描述】:
我正在使用 Slick 3.2.1
这是我的代码
println(s"select id from foo where email_address='${foo.emailAddress}' and id = 700")
val existsQuery = sql"""select id from foo where email_address='${foo.emailAddress}' and id = 700""".as[Long]
val result = Await.result(mysqlDbWrite.run(existsQuery), Duration.Inf).isEmpty
println(s"result ${result}")
此代码首先打印
select id from foo where email_address='foo@yahoo.com' and id = 700
然后抛出错误
Parameter index out of range (1 > number of parameters, which is 0).
但是您可以清楚地看到,我的查询中没有任何?。我也没有设置任何参数。那么为什么会出现这个错误呢?
【问题讨论】:
-
不要将
'${foo.emailAddress}'放在单引号中。 Slick 会将${foo.emailAddress}视为传递给查询的参数,并将其重写为'?'。但是,由于它位于单引号内,SQL 数据库将看到将email_address列与'?'字符串进行比较,这不算作参数。写成email_address = ${foo.emailAddress}就行了。 -
是的,有效。您能否以答案而不是评论的形式回复。这样我就可以将其标记为正确答案