【问题标题】:Error:could not find implicit value for parameter p: scala.slick.jdbc.SetParameter[java.util.UUID]错误:找不到参数 p 的隐式值:scala.slick.jdbc.SetParameter[java.util.UUID]
【发布时间】:2013-08-09 06:30:38
【问题描述】:

使用 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"
        }
    }
}

【问题讨论】:

    标签: scala playframework slick


    【解决方案1】:

    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"
            }
        }
    }
    

    【讨论】:

    • @Ram,在做出我建议的更改后,现在编译器错误是什么?
    • @Ram,我添加了你的代码的修改版本,现在应该为你编译。
    • 在 '"+?c.subscriber_uuid.toString+"' 上添加单引号后效果很好
    猜你喜欢
    • 1970-01-01
    • 2015-05-14
    • 1970-01-01
    • 1970-01-01
    • 2016-02-13
    • 2022-08-05
    • 2017-02-02
    • 2016-01-17
    • 2011-10-17
    相关资源
    最近更新 更多