对于使用 Slick 的 Rep[Optional[...]] 的收益

For yield with Rep[Optional[...]] using Slick

我正在尝试使用以下伪代码检查我的列是否至少包含所提供列表中的一个元素:

其中 b.testColumn = Rep[可选[列表]].

def checkTest(id: UUID, input: List[String]) = {

  for {
    a <- a.query if a.id === id
    b <- b.query if a.bId === b.id && b.testColumn.intersect(input)
  } yield b

  ApplicationDatabase.slick.run...
}

我收到以下代码的类型不匹配错误:

b <- b.query if a.bId === b.id && b.testColumn.intersect(input)

我的问题是 - 如何轻松解包 Rep[可选[...]] 并与我的输入值进行比较

你试过了吗inSet

b <- b.query if a.bId === b.id && b.testColumn.inSet(input)

经过调查,我发现访问 Rep[Optional[...]] 的最简单方法是 .map

例如- b <- b.query if a.bId === b.id && b.map(_.testColumn).inSetBind(input)