使用单个数据库会话在特征中初始化多个val

时间:2014-02-27 22:17:46

标签: scala initialization

我们有几个特征,其字段是从数据库(MySql之上的Slick)初始化的,例如。

trait MyTrait {
  val field1 = db withSession { Table1.get(id1) }
  val field2 = db withSession { Table2.get(id2) }
  val field3 = db withSession { Table3.get(id3) }
  ...
}

我希望能够通过一个会话初始化它们。我可以做类似

的事情
trait MyTrait {
  private val tuple = db withSession { Table1.get(id1) -> Table2.get(id2) -> Table3.get(id3) }
  val field1 = tuple._1
  val field2 = tuple._2
  val field3 = tuple._3
}

但我希望用更少的样板

来做

1 个答案:

答案 0 :(得分:2)

我认为这也应该有用吗? (您可能还可以在单​​个查询中检索所有3个ID ...)

private val (field1, field2, field3) = db withSession { 
  Table1.get(id1) -> Table2.get(id2) -> Table3.get(id3) 
}