0
私はScala - Spray - Sormを使ってRest APIを開発しています。私は既存のデータベースにSormフレームワークを実装しようとしています。 、保存、更新および削除は、すでに正常に動作しますが、私は、データベースから何かを照会しようとする時はいつでも、それは私に与えている:Spray/Sormは引数型の不一致を示します
[ERROR] [07/22/2016 09:57:14.377] [on-spray-can-akka.actor.default-
dispatcher-5] [akka://on-spray-can/user/growficient-api] argument type mismatch:
Incorrect values of parameter types:
- long:
| class java.lang.Long:
| 91
- class java.lang.String:
| class org.joda.time.LocalDate:
| 2016-04-08
- class java.lang.String:
| class org.joda.time.LocalTime:
| 12:55:27.000
- int:
| class java.lang.Integer:
| 0
- int:
| class java.lang.Double:
| 2155.0
- int:
| class java.lang.Integer:
| 22
- int:
| class java.lang.Integer:
| 35
- int:
| class java.lang.Integer:
| -65
私のモデルは次のとおりです。
object Samples extends DefaultJsonProtocol with SprayJsonSupport {
implicit object samplesFormat extends RootJsonFormat[Samples] {
override def read(value: JsValue) = {
println(value)
value.asJsObject.getFields("gatewayid", "sensorid", "date", "time", "wc", "ec", "temp", "battery", "rssi") match {
case Seq(
JsString(gatewayid),
JsString(sensorid),
JsString(date),
JsString(time),
JsNumber(wc),
JsNumber(ec),
JsNumber(temp),
JsNumber(battery),
JsNumber(rssi)
) =>
new Samples(gatewayid, sensorid, date, time, wc.toInt, ec.toInt, temp.toInt, battery.toInt, rssi.toInt)
case _ => throw new DeserializationException(s"$value is not properly formatted")
}
}
override def write(s: Samples) = JsObject(
"gatewayid" -> JsString(s.gatewayid),
"sensorid" -> JsString(s.sensorid),
"date" -> JsString(s.date),
"time" -> JsString(s.time),
"wc" -> JsNumber(s.wc),
"ec" -> JsNumber(s.ec),
"temp" -> JsNumber(s.temp),
"battery" -> JsNumber(s.battery),
"rssi" -> JsNumber(s.rssi)
)
}
}
case class Samples(gatewayid: String, sensorid: String, date: String, time: String, wc: Int, ec: Int, temp: Int, battery: Int, rssi: Int)
今テスト目的のために、私は
object DB extends Instance(
entities = Set(
Entity[Samples]()
),
url = s"jdbc:mysql://$addr:$port/$database",
user = username,
password = password,
initMode = InitMode.Create
)
DB.query[Samples].fetch().toList
残念ながら、指定されたエラー出力でクエリでクラッシュします。私は何かが間違ったタイプのパラメータを得ていることを理解していますが、何が分かりません。
誰かが私を正しい方向に向けることができたら本当に感謝します。
ありがとうございました!私はJodaタイプを使用するようにすべてを変更し、また、1つのパラメータをDoubleに変更する必要があることに気付きました。これは私の問題を解決した – sergei