Database 如何在Slick 3.0中设计共享模式?
我正在用slick 3.0设计一把刀。我的问题是,模式中的每个表都有以下3个公共列: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并从所有其他模式类扩展?我不想重复复制和粘贴这段代码多次 我的一个班是:
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)
}