сопоставленная проекция с сопутствующим объектом в SLICK

Я вложил классы / объекты и хочу сохранить (и получить) их в базе данных с помощью SLICK. Я понимаю, что с SLICK картографическая проекция была бы ключевой. Кроме того, я использую сопутствующий объект для отображения между вложенными объектами и плоской структурой (для хранения в таблице БД). Я хочу сделать что-то вроде этого (упрощенный пример):

case class Foo(id: Int, myBar: Bar)

case class Bar(myInt: Int, myString: String)

object Foo {
  def apply(id: Int, myInt: Int, myString: String): Foo = Foo(id, Bar(myInt, myString))

  override def unapply(f: Foo) = (f.id, f.myBar.myInt, f.myBar.myString)
}

object TTable extends Table[Foo]("FOO") {
    def id = column[Int]("id",  O.PrimaryKey)
    def myInt = column[Int]("myInt", O NotNull)
    def myString = column[String]("myString", O NotNull)

    def * = id ~ myInt ~ myString <> (Foo.apply _, Foo.unapply _)

    def query(db: Database, id: Int): Option[Foo] = db withSession { //s: Session =>
        (for { b <- TTable if b.id is id} yield b).firstOption
    }
}

Но компиляция завершается неудачно с несколькими ошибками: «метод unapply определяется дважды», «неоднозначная ссылка на перегруженное определение, оба метода apply [...] соответствуют ожидаемому типу?» и "перегруженное значение метода <> с альтернативами"

Я нашел это превосходное объяснение картографической проекции "метод scala slick пока не могу понять" а также "Отображение проекции с помощью <> на класс case с сопутствующим объектом в Slick«но ни одно из предложенных решений не работает для меня.

Ответы на вопрос(1)

Ваш ответ на вопрос