简体   繁体   English

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

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

Inserting a row in postgres database table using scala produce following error. 使用scala在postgres数据库表中插入一行会产生以下错误。

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

SignUpProcess.scala 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 does not know how to set a UUID instance into a query. Slick不知道如何将UUID实例设置为查询。 Try adding the UUID into the query as c.subscriber_uuid.toString instead. 尝试将UUID作为c.subscriber_uuid.toString添加到查询中。

You are also missing an implicit session on withSession . 您还缺少withSessionimplicit session A modified example of your code that compiles is as follows: 编译后的代码修改示例如下:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM