Я использую отличный ScalaQuery, и я пытаюсь создать общий репозиторий для общих операций, но я не соглашусь с ним. Надеюсь, кто-то может помочь.Общий репозиторий с использованием 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)
и таблицы для буксировки продукта и порядка. Теперь я хочу, общий репозиторий:
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
}
Я не могу реализовать в querys, используя для понимания, так как кортеж, описывающий таблицу не известен во время компиляции в признака (или абстрактный класс) RecordRepository.
Заранее благодарен!
на основе прилагаемого фрагмента кода, вы еще не сопоставляются продукта и модели Order классы соответствующих таблиц БД – virtualeyes
Да, я хотел сэкономить место, вот простая схема: 'object ProductTable extends ExtendedTable [(Long, String, Int)] (« продукт ») { def id = column [Long] (« id », O. PrimaryKey, O.AutoInc) def name = column [String] ("name", O. NotNull) цена DEF = столбец [Int] ("цена", O.NotNull) Защита * = идентификатор ~ имя ~ цена } объекта OrderTable расширяет ExtendedTable [(Long, String, Int)] ("порядок") { def id = column [Long] ("id", O.PrimaryKey, O.AutoInc) def name = column [String] ("name", O.NotNull) def amount = column [Int] ("цена ", O.NotNull) def * = id ~ name ~ amount } ' – singy