次のコードでは、レコードを問題なく挿入できます。しかし、挿入された値の ID を取得して、応答の一部としてオブジェクトを返すことができるようにしたいと考えています。
def postEntry = DBAction { request =>
request.body.asJson.map {json =>
json.validate[(String, Long, String)].map {
case (name, age, lang) => {
implicit val session = request.dbSession
val something = Entries += Entry(None, name, age, lang)
Ok("Hello!!!: " + something)
}
}.recoverTotal {
e => BadRequest("Detected error: " + JsError.toFlatJson(e))
}
}.getOrElse {
BadRequest("Expecting Json data")
}
}
そこで、挿入を次のように変更してみました。
val something = (Entries returning Entries.map(_.id)) += Entry(None, name, age, lang)
しかし、次の例外が発生します。
SlickException: This DBMS allows only a single AutoInc column to be returned from an INSERT
ここにメモがあります:http://slick.typesafe.com/doc/2.1.0/queries.html
「多くのデータベースシステムでは、テーブルの自動インクリメント主キーでなければならない単一の列のみを返すことができることに注意してください。他の列を要求すると、実行時に SlickException がスローされます (データベースが実際にサポートしていない場合)。」
ただし、ID 列を要求する方法については述べていません。