gpt4 book ai didi

光滑的 MappedTo[String] 列不能使用像

转载 作者:行者123 更新时间:2023-12-01 06:52:08 24 4
gpt4 key购买 nike

我想使用 MappedTo[String] 作为一种列类型。有一个查询使用 like 来选择一些记录。

示例代码:

case class ID(value: String) extends scala.slick.lifted.MappedTo[String]

class Order(tag: Tag) extends Table[(ID, String)](tag, "order") {
def id = column[ID]("id", O.PrimaryKey)
def name = column[String]("name", O.NotNull)
def * = (id, name)
}

val ordres = TableQuery[Order]

def all(implicit session: Session) = {
ordres.filter(_.id like "2014.%").list
}

编译器错误:
[error]  value like is not a member of scala.slick.lifted.Column[models.ID]
[error] ordres.filter(_.id like "2014.%").list
[error] ^
[error] ambiguous implicit values:
[error] both value BooleanColumnCanBeQueryCondition in object CanBeQueryCondition of type => scala.slick.lifted.CanBeQueryCondition[scala.slick.lifted.Column[Boolean]]
[error] and value BooleanOptionColumnCanBeQueryCondition in object CanBeQueryCondition of type => scala.slick.lifted.CanBeQueryCondition[scala.slick.lifted.Column[Option[Boolean]]]
[error] match expected type scala.slick.lifted.CanBeQueryCondition[Nothing]
[error] ordres.filter(_.id like "2014.%").list

如何解决?谢谢。

最佳答案

我目前找到的唯一解决方案是求助于 sql interpolated strings

//slick needs this to be able to convert to your custom wrapper type
implicit val GetID = GetResult(r => ID(r.nextString))

def all(implicit session: Session) = {
sql"""select id, name from order where id like '2014.%'""").list
}

作为旁注,还有一个 startsWith可用于过滤带有提升嵌入的字符串的方法,它更适合您的情况;也就是说,如果过滤器按预期工作。

关于光滑的 MappedTo[String] 列不能使用像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24215349/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com