2

我不确定 squeryl 在这里试图告诉我什么:

错误:无法证明 org.squeryl.dsl.fsm.Unconditioned =:= org.squeryl.dsl.fsm.Conditioned。

在:

inTransaction {
  update(AppDB.postTable) { p =>
    where(p.id === postId)
    set(p.upVotes := p.upVotes.~ + 1) 
}

错误在 set 子句上

架构:

object AppDB extends Schema {
   val postTable = table[Post]("post")
   val replyTable = table[Reply]("reply")

   val postToReplies = oneToManyRelation(postTable, replyTable)
          .via((p,r) => p.id === r.postId)
    }

    case class Post(body: String, image:Option[String]) extends KeyedEntity[Long] {
      val id: Long = 0
      val posted: Date = new Date()
      var upVotes: Long = 0
      var downVotes: Long = 0
    }

    case class Reply(postId: Long, body: String, image:Option[String]) extends KeyedEntity[Long] {
        val id: Long = 0
        val posted: Date = new Date()
    }

谢谢你的帮助。

4

1 回答 1

7

尝试在你的and子句周围使用()而不是,例如:{}whereset

inTransaction {
  update(AppDB.postTable) ( p =>
    where(p.id === postId)
    set(p.upVotes := p.upVotes.~ + 1) 
  )
}

我不知道为什么,但我过去遇到过问题{}。当我针对您的代码测试更改时,问题似乎得到了解决。

于 2013-01-31T19:42:58.373 回答