Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 如何在Slick 3.0中设计共享模式?_Database_Scala_Dao_Slick_Spray - Fatal编程技术网

Database 如何在Slick 3.0中设计共享模式?

Database 如何在Slick 3.0中设计共享模式?,database,scala,dao,slick,spray,Database,Scala,Dao,Slick,Spray,我正在用slick 3.0设计一把刀。我的问题是,模式中的每个表都有以下3个公共列: def id = column[UUID]("id", O.PrimaryKey) def createdDate = column[Timestamp]("created_date") def updatedDate = column[Timestamp]("updated_date") 是否有一种设计将它们放入trait并从所有其他模式类扩展?我不想重复复制和粘贴这段代码多次 我的一个班是:

我正在用slick 3.0设计一把刀。我的问题是,模式中的每个表都有以下3个公共列:

  def id = column[UUID]("id", O.PrimaryKey)
  def createdDate = column[Timestamp]("created_date")
  def updatedDate = column[Timestamp]("updated_date")
是否有一种设计将它们放入trait并从所有其他模式类扩展?我不想重复复制和粘贴这段代码多次

我的一个班是:

class EmailParameterSchema(tag: Tag) extends Table[EmailParameter](tag, "email_parameter") {
  def id = column[UUID]("id", O.PrimaryKey)
  def paramKey = column[String]("param_key")
  def paramValue = column[String]("param_value")
  def emailQueueId = column[UUID]("email_queue_id")
  def createdDate = column[Timestamp]("created_date")
  def updatedDate = column[Timestamp]("updated_date")

  def * = (id, paramKey, paramValue, emailQueueId,createdDate,updatedDate) <> (EmailParameter.tupled, EmailParameter.unapply)
}

我已经解决了。这是共享架构:

trait CommonSchema[A] extends Table[A] {
  def id = column[UUID]("id", O.PrimaryKey)
  def createdDate = column[Timestamp]("created_date")
  def updatedDate = column[Timestamp]("updated_date")
}
这就是如何使用它:

class EmailParameterSchema(tag: Tag) extends Table[EmailParameter](tag, "email_parameter") with CommonSchema[EmailParameter]{
  def paramKey = column[String]("param_key")
  def paramValue = column[String]("param_value")
  def emailQueueId = column[UUID]("email_queue_id")

  def * = (id, paramKey, paramValue, emailQueueId,createdDate,updatedDate) <> (EmailParameter.tupled, EmailParameter.unapply)
}