我对 Scala 和 ScalaQuery 很陌生,现在已经使用了几个星期。我试图通过调用函数来找出查询中的条件,但我得到的是 NamedColumn[T] 而不是 T,如何解压它?
见第二个链接,第 20 行:
带有类型映射器的包: https ://gist.github.com/3469291
表对象:https ://gist.github.com/3469291
case class MyObject (
id: Long,
created: JodaTime
modified: JodaTime
special: JodaTime
)
object MyObjects extends Table[MyObject]("my_objects") {
lazy val database = Database.forDataSource(DB.getDataSource())
def id = column[Long]("id", O PrimaryKey, O AutoInc, O NotNull)
def created = column[JodaTime]("created", O NotNull)
def modified = column[JodaTime]("modified", O NotNull)
def special = column[JodaTime]("special", O NotNull)
def * = id ~ created <> (MyObject, MyObject.unapply _)
def getMarker(time: JodaTime) = database.withSession { implicit db:Session =>
(for {
e <- MyObjects if (new org.joda.time.Interval(e.created, e.modified).contains(e.special)
} yield (e.id, e.created)).firstOption
}
}
e.created / modified /special 是 NamedColumns,因此构造函数和函数调用将不起作用。我该如何进行这项工作?
我没有测试我的对象,我只是抓住了一个类并剥离并重命名了东西,只是为了展示我有什么和想做的。
谢谢。