微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我可以将计算值添加到 Slick 模型吗?

如何解决我可以将计算值添加到 Slick 模型吗?

假设我的数据库中有一个水果表:

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 举报,一经查实,本站将立刻删除。