2

scala を使用した play フレームワークを使用して単純な Web アプリケーションを開発し、データベースを mysql に保存していますが、エラーが発生しています

例外

私は何をやっている :

  • ユーザーが値を入力し、保存した後、データベースに存在するすべてのエントリを表示するページにユーザーをリダイレクトしています
  • 値は保存されますが、ページへのリダイレクト時に例外が発生します

models/Keyword.scala

case class Keyword(blog: String,cat: String,word: String,count: Long, summaryId: String)

object Keyword {


  val keyw = {
    get[String]("keyword.blog")~
    get[String]("keyword.cat")~
    get[String]("keyword.word")~
  get[Long]("keyword.count") ~ 
  get[String]("keyword.summaryId") map {
    case blog~cat~word~count~summaryId => Keyword(blog,cat,word,count, summaryId)
  }
}

  def all(): List[Keyword] = DB.withConnection { implicit c =>
  SQL("select * from keyword").as(Keyword.keyw *)
}


def create(key: Keyword){DB.withConnection{implicit c=> 
  SQL("insert into keyword values({blog}, {cat}, {word},{count},{summaryId})").on('blog->key.blog,
      'cat -> key.cat,
      'word-> key.word,
      'count-> key.count,
      'summaryId -> key.summaryId).executeUpdate()
}
}

controllers/Application.scala

object Application extends Controller {

  val ta:Form[Keyword] = Form(
          mapping(
    "blog" -> nonEmptyText,
    "cat" -> nonEmptyText,
    "word" -> nonEmptyText,
    "count"-> of[Long],
    "summaryId"-> nonEmptyText
  )(Keyword.apply)(Keyword.unapply)
  )

  def index = Action {
    Ok(html.index(ta));
  }
  def newTask=  Action { implicit request =>
  ta.bindFromRequest.fold(
    errors => BadRequest(html.index(errors)),
    keywo => {

      Keyword.create(keywo)
      Ok(views.html.data(Keyword.all()))
    }
  )
}

- h2-database を使用しているときは、実行中です

- その時にMySQLを使用しているときに例外が発生しています

この問題を解決するアイデアを教えてください!

4

2 に答える 2

1

app/helpers フォルダーに AnormExtension ヘルパーを作成します。それを AnormExtension.scala と呼びます。以下のコード:

object AnormExtension {

implicit def rowJavaLongToLong: Column[Long] = Column.nonNull { (value, meta) =>
  val MetaDataItem(qualified, nullable, clazz) = meta
    value match {
       case d: java.lang.Long => Right(d.longValue())
       case _ => Left(TypeDoesNotMatch("Cannot convert " + value + ":" + value.asInstanceOf[AnyRef].getClass + " to Long for column " + qualified))
    }
  }
}
于 2014-08-06T06:16:33.220 に答える
0

pgsql と anorm で INSERT を実行しようとすると、このエラーがよく発生します。Sql String パーサーを使用して解決しました。これはうまくいくかもしれません...ただし、100%確実ではありません:

 def all(): List[Keyword] = DB.withConnection { implicit c =>
  SQL("select * from keyword").as(Keyword.keyw *).execute(SqlParser.scalar[String].singleOpt)
}
于 2015-10-07T01:55:17.527 に答える