错误:找不到参数p:scala.slick.jdbc.SetParameter[java.util.UUID]的隐式值



使用scala在postgres数据库表中插入一行会产生以下错误。

could not find implicit value for parameter p: scala.slick.jdbc.SetParameter[java.util.UUID]

SignUpProcess.scala

case class SignUpProcess(subscriber_uuid:UUID,firstname:String,lastname:String,jobtitle:String,phone:String,email:String,password:String,company_name:String,no_of_employees:Int,my_schema_name:String,my_date:Date,my_time:Time) 
object SignUpProcess{
    // _ip -> input parameter
    def signUp(firstname_ip: String, lastname_ip: String, jobtitle_ip: String, phone_ip: String, email_ip: String, password_ip: String, companyname_ip: String, employeescount_ip: Int) : String = {
        Database.forURL("jdbc:postgresql://localhost:5432/my_db", "postgres", "mypassword",null, driver="org.postgresql.Driver") withSession{
            def insert(c: SignUpProcess) = (Q.u + "insert into my_schema.my_table(subscriber_uuid,firstname,lastname,jobtitle,phone,email,password,company_name,no_of_employees,my_schema_name,my_date,my_time) values( '"+? c.subscriber_uuid+"', "+? c.firstname+","+? c.lastname+","+? c.jobtitle+","+? c.phone+","+? c.email+","+? c.password+","+? c.company_name+","+? c.no_of_employees+","+? c.my_schema_name+","+? c.my_date+","+? c.my_time+")").execute
            Seq(
              SignUpProcess(UUID.randomUUID(), firstname_ip, lastname_ip, jobtitle_ip, phone_ip, email_ip, password_ip, companyname_ip, 10, "mymail_gmail_com", new Date(2013,8,8), new Time(16,30,0))
            ).foreach(insert)
            "Success"
        }
    }
}
Slick不知道如何在查询中设置UUID实例。请尝试将UUID作为c.subscriber_uuid.toString添加到查询中。

withSession上还缺少一个implicit session。编译代码的修改示例如下:

import java.util.UUID
import java.sql.Date
import java.sql.Time
import scala.slick.session.Database
import scala.slick.jdbc.{StaticQuery => Q}
case class SignUpProcess(subscriber_uuid:UUID,firstname:String,lastname:String,jobtitle:String,phone:String,email:String,password:String,company_name:String,no_of_employees:Int,my_schema_name:String,my_date:Date,my_time:Time) 
object SignUpProcess{
    // _ip -> input parameter
    def signUp(firstname_ip: String, lastname_ip: String, jobtitle_ip: String, phone_ip: String, email_ip: String, password_ip: String, companyname_ip: String, employeescount_ip: Int) : String = {
        Database.forURL("jdbc:postgresql://localhost:5432/my_db", "postgres", "mypassword",null, driver="org.postgresql.Driver") withSession{ implicit session =>
            def insert(c: SignUpProcess) = (Q.u + "insert into my_schema.my_table(subscriber_uuid,firstname,lastname,jobtitle,phone,email,password,company_name,no_of_employees,my_schema_name,my_date,my_time) values( '"+? c.subscriber_uuid.toString+"', "+? c.firstname+","+? c.lastname+","+? c.jobtitle+","+? c.phone+","+? c.email+","+? c.password+","+? c.company_name+","+? c.no_of_employees+","+? c.my_schema_name+","+? c.my_date+","+? c.my_time+")").execute
            Seq(
              SignUpProcess(UUID.randomUUID(), firstname_ip, lastname_ip, jobtitle_ip, phone_ip, email_ip, password_ip, companyname_ip, 10, "mymail_gmail_com", new Date(2013,8,8), new Time(16,30,0))
            ).foreach(insert)
            "Success"
        }
    }
}

最新更新