2

ここでスクエリルが何を伝えようとしているのかわからない:

エラー: 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 に答える