Slickでは、データベーステーブルエントリを、それらが表すケースクラスに直接投影しようとしています。私はSomeEntity3に、いくつかの静的定数及び補助メソッドを追加したいのですが、今Slickのコンパニオンオブジェクトを持つケースクラスへの<>を使ったマップ投影
case class SomeEntity3(id: Int, entity1: Int, entity2: Int)
val SomeEntityTable = new Table[SomeEntity3]("some_entity_table") {
def id = column[Int]("id", O.PrimaryKey, O.AutoInc)
def entity1 = column[Int]("entity1")
def entity2 = column[Int]("entity2")
def * = id ~ entity1 ~ entity2 <> (SomeEntity3, SomeEntity3.unapply _)
}
:example in the documentationに続いて、私は<>
演算子を使用してマッピングされたプロジェクションを設定します。そのために、私はコンパニオンオブジェクトを作成します。しかし、すぐに、私は
object SomeEntity3
行を含めるとかなり野生複数行のエラーは、「代替案との>オーバーロードされたメソッド値<」について判読できない何かを言って*
の定義については、ポップアップ表示されます。
コンパニオンオブジェクトはSlickの双方向マッピングにどのように関連していますか?どういうわけか私の目標を達成できますか?
これは確かに、作業を行います。スペルが明示的に適用される理由についての説明が必要です。ここで問題を修正してください。 – notan3xit
明示的に関数への適用(η拡張)は '(Int、Int、Int)=> SomeEntity3'、すなわちコンパニオンオブジェクトが最初にあるべき型です。より一般的には、関数オブジェクトのapplyメソッドを "新しい"関数オブジェクトに変換すると、元の関数と同じ型が得られます。 –
何らかの理由で、コンパニオンオブジェクトを持っているときにscalacが混乱し、オブジェクトのapplyを持ち上げない。 – pedrofurla