--------(--)

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

2014-01-03(Fri)

PlayFrameworkでcould not find implicit value for parameter extractor

以下の条件でエラー発生。
条件

①Play2.2.1 + PostgreSQL9.3.1。
②テーブルにnumeric(5,2)を利用。
③PlayではFloatを利用。
④select文を利用しテーブルデータを取得。


エラー内容
could not find implicit value for parameter c: anorm.Column[Float]

コード

case class Location (
id: Pk[Long] = NotAssigned,
pid: String,
x: Float
)

object Location {
val simple = {
get[Pk[Long]]("location.id") ~
get[String]("location.pid") ~
get[Float]("location.x") map {
case id ~ pid ~ x => Location(
id,
pid,
x
)
}
}
def findByPid(pid: String): List[Location] = {
Logger.debug("findByPid Start:"+ pid)
DB.withConnection { implicit connection =>
SQL("select * from location where pid = {pid}")
.on('pid -> pid)()
.as(Location.simple.singleOpt)
}
}
}



原因
PostgreSQLのnumericを取得するとFloatではなくBigDecimalで取得しないとエラーとなるようだ。
対応として、以下の通りとした。
もっとよいやり方があれば教えていただきたい。

def findByPid(pid: String): List[Location] = {
Logger.debug("findByPid Start:"+ pid)
DB.withConnection { implicit connection =>
SQL("select * from location where pid = {pid}")
.on('pid -> pid)()
.map(row => read(row)).toList
}
}
def read(row: SqlRow): Location = {
val o = new Location(
pid = row[String]("pid"),
x = row[java.math.BigDecimal]("x").doubleValue().toFloat
)
return o
}



関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

コメント

プロフィール

kumagonjp2

Author:kumagonjp2
Python,Django,R,Mongo,MySQL,Struts,Spring,データマイニングなどサーバー関係のメモを残していきます。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
雪が3Dで降るブログパーツ ver2

マウスで見る方向変えられます

検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。