scala slick通过一个模型处理2个以上相同结构的表

标签 scala slick

我正在尝试实现诸如日志表之类的东西。

假设我有...

final class LogTable(tag: Tag) extends Table[LogModel](tag,"log"){
  def createdAt = column[Timestamp]("created_at")
  //...
}

由于日志在单个表中获取了太多记录,因此我想使用多个结构完全相同但名称不同的表。换句话说,我只想更改 Table[](tag,"this name") 并且如果可能的话,我想让它在从外部调用时像单个表一样运行.

当前我的实现

class LogBase(tag: Tag) extends Table[LogModel](tag,"log"){
  def createdAt = column[Timestamp]("created_at")
  //...
}

final class LogTable1(tag:Tag) extends LogBase(tag){
  override val tableName = "log1"
}

final class LogTable2(tag:Tag) extends LogBase(tag){
  override val tableName = "log2"
}

//...

尽管最后一个选择是根据需要编写尽可能多的表,有什么方法可以以智能的方式实现这一点?

任何形式的建议都值得赞赏。

最佳答案

为什么不简单地将表名作为参数传递?

class LogBase(tag: Tag, id: Int) extends Table[LogModel](tag, s"log${id % 100}")

您可以创建一个工厂来抽象此逻辑

关于scala slick通过一个模型处理2个以上相同结构的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36538436/

相关文章:

scala - Scala 酸洗是否适用于 Scala 2.11?

Scala/Slick 纯 SQL : retrieve result as a map

scala - 如何使用 Slick 3 + Specs2 回滚集成测试?

scala - 如何将 1000 条记录批量插入数据库?

scala - 是否可以创建包含无效 UTF-8 字节的 Scala 字符串?

scala - 什么是Scala 'killer app'?

java - Scala 无法解析继承的 Java 接口(interface)常量成员

scala - Kotlin VS Scala : Implement methods with primary constructor parameters

scala - 处理枚举类型的通用映射函数

slick - 如何在 slick 3.0 中将 Rep[T] 转换为 T?