问题描述
abstract class FruitRow extends Table[Fruit] {
def appleId = column[Option[Long]]("apple_id")
def orangeId = column[Option[Long]]("orange_id")
def fruitName: Rep[String] // <-- Todo
def * = // snip //
}
case class Fruit(appleIdOpt: Option[Long],orangeIdOpt: Option[Long]) {
def fruitName = (appleIdOpt,orangeIdOpt) match {
case (Some(_),None) => "Apple"
case _ => "Orange"
}
}
现在如果你也认为这是一个荒谬的模型,那么请务必加入派对,但这是我必须处理的。
以前只用Fruit.fruitName
就可以满足我的需求,但现在如果我能实现FruitRow.fruitName
,我的生活会轻松很多,但我想不通我会怎么做。我一直在仔细研究在线提交的 Slick 文档和问题,但我似乎找不到任何类似的内容。
我曾尝试在 .map
上使用 FruitRow.appleId
以尝试获取其中的 Option,但这是徒劳的。
是否可以在 FruitRow
类本身上定义“虚拟”或“计算”列,本质上是从一组真实列到计算列的映射虚拟价值?在此示例中,我想要一个 Rep[String]
,如果 "Apple"
不为空,结果为 appleId
,否则为 "Orange"
。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)