我正在使用 scala 开发简单的 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 数据库
- 当我使用 MySQL 时出现异常
给我一些解决这个问题的想法!
最佳答案
在 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))
}
}
}
关于mysql - 如何解决RuntimeException : TypeDoesNotMatch(Cannot convert 1:class java. lang.String to Long for column?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19678683/