1
假設我有一些小列的表,和一個大的(比如BLOB)列:斯利克 - 可選包括/省略大柱
case class Thing(id: Int, small1: String, small2: String, small3: String, large: String)
class ThingMapping(tag: Tag) extends Table[Thing](tag, "things") {
def id = column[Int]("id", O.PrimaryKey, O.NotNull, O.AutoInc)
def small1 = column[String]("small1")
def small2 = column[String]("small2")
def small3 = column[String]("small3")
def large = column[String]("large")
def * = (id, small1, small2, small3, large) <> (Thing.tupled, Thing.unapply)
}
在某些情況下,我想查詢除large
列以外的所有列的表格。在其他人中,我想包括它。我更喜歡使用大小寫類而不是元組。
Slick是否有這樣的模式?
選項,我認爲:
- 有兩個映射 - 一個 「瘦」 和 「胖」 的映射。
- 將大柱拆分成單獨的表格,然後根據需要加入。
爲什麼不定義'large'爲'選項[字符串]'了' Thing' case類和可選的表定義,然後添加另一個選擇'def'如'def allNoLarge =(id,small1,small2,small3)'你在哪裏不要從db中選擇'large'字段。然後,將它留給調用代碼來選擇使用哪個「def」選項。 – cmbaxter 2014-08-27 13:12:17
@cmbaxter - 目前,我的調用代碼使用的東西是:'val things = TableQuery [ThingMapping]'。如何適應在映射中有多個選擇定義? – 2014-09-01 09:44:56
您仍然可以使用'TableQuery'作爲起點,然後使用'.map'方法產生一個僅查詢特定列的新查詢。我會添加一個答案顯示這一點。 – cmbaxter 2014-09-01 12:37:04