Im folgenden Code kann ich meine Datensätze einfach einfügen. Aber ich möchte wirklich die ID des eingefügten Wertes zurückbekommen, damit ich das Objekt als Teil meiner Antwort zurückgeben kann.Play Slick 2.1.0 Dieses DBMS erlaubt nur eine einzige AutoInc-Spalte von einem INSERT zurückgegeben werden
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")
}
}
Also habe ich versucht, den Einsatz zu ändern:
val something = (Entries returning Entries.map(_.id)) += Entry(None, name, age, lang)
Aber ich bekomme die folgende Ausnahme:
SlickException: This DBMS allows only a single AutoInc column to be returned from an INSERT
Es gibt eine Notiz hier: http://slick.typesafe.com/doc/2.1.0/queries.html
" Beachten Sie, dass viele Datenbanksysteme nur eine einzelne Spalte zurückgeben können, die das Au der Tabelle sein muss Inkrementieren des Primärschlüssels. Wenn Sie für andere Spalten ein SlickException fragen wird zur Laufzeit geworfen (es sei denn, die Datenbank tatsächlich unterstützt).“
Aber es sagt nicht, wie nur die ID-Spalte anfordern.
nicht 'Entries' a haben Primärschlüssel? Ich bin nicht dünn k Ihre ID-Spalte ist diejenige, in der Sie "None" an "Entry" übergeben, was mich zu der Annahme bringt, dass es optional ist. –
Danke! Du hast mich zum Nachdenken gebracht und ich bin zurückgegangen und habe es überprüft. Ich habe es geschafft, mein Primärschlüsseldef und Auto-Inkrementdef in der Tabellenzuordnung zurückzusetzen. –
Gern geschehen. –