使用Slick,我試圖將數據庫表項直接投影到它們表示的案例類。繼example in the documentation,我設置成使用<>
操作映射的投影:將帶有<>的映射投影映射到帶有伴隨對象的案例類別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 _)
}
現在,我想一些靜態常量和輔助方法添加到SomeEntity3。爲此,我創建了一個伴侶對象。但只要我包括線
object SomeEntity3
爲*
說一些難以辨認的關於「重載方法值<>替代品」的定義,一個漂亮的野生多行錯誤彈出。
伴侶對象如何與Slick中的雙向映射關聯,並且可以以某種方式實現我的目標?
這並不工作,確實如此。任何關於拼寫爲什麼明確應用的解釋都是需要的,並在此解決問題? – notan3xit 2013-03-03 13:27:24
明確地將apply方法轉換爲函數(eta擴展)會產生'(Int,Int,Int)=> SomeEntity3',即伴隨對象應該放在第一位的類型。更一般地說,將一個函數對象的apply方法轉換成一個「新」函數對象產生與原始函數相同的類型。 – 2013-03-03 13:36:34
由於某些原因,當您有伴侶對象時,scalac會感到困惑,並且不會解除對象的應用。 – pedrofurla 2013-03-03 14:03:19