私は素晴らしいScalaQueryを使用しており、一般的な操作用の汎用リポジトリーを作成しようとしていますが、うまくいきません。うまくいけば、誰かが助けることができます。
私は例えば次の構造を持っています
abstract class Record(id : Int)
class Product(id: Int,name:String,price : Int) extends Record(id)
class Order(id: Int,name:String,amount: Int) extends Record(id)
製品と注文用の2つのテーブル。今、私は汎用リポジトリが必要です:
trait RecordRepository[T <: ExtendedTable[O]]{
findById(id:Int) : Option[T]
findAll() : List[T]
save(entity:T)
...
}
class ProductRepository extends RecordRepository[Product]
class ProductRepository extends RecordRepository[Order]
object ProductTable extends ExtendedTable[(Long, String, Int)]("product") {
def id = column[Long]("id", O.PrimaryKey, O.AutoInc)
def name = column[String]("name", O.NotNull)
def price = column[Int]("price", O.NotNull)
def * = id ~ name ~ price
}
object OrderTable extends ExtendedTable[(Long, String, Int)]("order") {
def id = column[Long]("id", O.PrimaryKey, O.AutoInc)
def name = column[String]("name", O.NotNull)
def amount = column[Int]("price", O.NotNull)
def * = id ~ name ~ amount
}
テーブルを記述するタプルは、トレイト(または抽象クラス)RecordRepositoryでコンパイル時に認識されないため、forcomprehensionを使用してクエリを実装することはできません。
前もって感謝します!