ich diesen Code geschrieben haben, die perfektSlick 3.0 einsetzen und erhalten Auto Increment Wert dann
class Items(tag: Tag) extends Table[Item](tag, "ITEMS") {
def id = column[Long]("ITEMS_ID", O.PrimaryKey, O.AutoInc)
def name = column[String]("ITEMS_NAME")
def price = column[Double]("ITEMS_PRICE")
def * = (id, name, price) <> ((Item.apply _).tupled, Item.unapply _)
}
object Shop extends Shop{
val items = TableQuery[Items]
val db = Database.forConfig("h2mem1")
def create(name: String, price: Double) : Int = {
val action = items ++= Seq(Item(0, name, price))
val future1 = db.run(action)
val future2 = future1 map {result =>
result map {x => x}
}
Await.result(future2, Duration.Inf).getOrElse(0)
}
}
funktioniert dieser Code funktioniert, aber der Rückgabewert ist die Anzahl der Datensätze eingefügt. Aber ich möchte den Wert von AutoInc nach der Einfügung zurückgeben.
habe ich Google und fand einige Artikel
Slick 3.0.0 AutoIncrement Composite Key
Returning the auto incrementing value after an insert using slick
Aber irgendwie diese die Frage sauber nicht beantworten.
+1. Ich fand, dass [Play-Slick-Silhouette] (https://github.com/sbrunk/play-silhouette-slick-seed) die TypeSafe Activator Vorlage eine ziemlich gute Einführung ist, wie man Slick 3.0 in einer "echten" Umgebung verwendet Zum Beispiel [hier] (https://github.com/sbrunk/play-silhouette-slick-seed/blob/master/app/models/daos/PasswordInfoDAO.scala) und [hier] (https: // github. com/sbrunk/play-silhouette-slick-samen/blob/master/app/modelle/daos/UserDAOImpl.scala), einschließlich der 'Return zugewiesene Identität' Problem. –
Wenn ich Ihnen eine Aufwertung von 100+ geben könnte, würde ich. Dies ist wahrscheinlich die prägnanteste Antwort auf diese Frage, die ich gesehen habe. –
das mag offensichtlich sein, aber ich bin neu in Slick/Scala, in welcher Variable die Autoinkrement-Spalte gespeichert ist? wie bekommt man es? – ps0604