私はこの質問への答えを求めて地球の果てに目を向けました。 slick2.0に関する情報はあまりありません。以下は私のAddressesモデルのコードですが、メソッドcreateに挿入後にIDを返すにはどうすればよいですか?
package models
import play.api.Play.current
import play.api.db.slick.Config.driver.simple._
import play.api.db.slick.DB
object Addresses{
val DB_URL:String = "jdbc:h2:mem:fls-play"
val DB_driver:String = "org.h2.Driver"
class Addresses(tag: Tag) extends Table[(String, String, String, String, String)](tag, "ADDRESSES"){
def id = column[Int]("ID", O.PrimaryKey, O.AutoInc)
def city = column[String]("CITY")
def stateName = column[String]("STATE_NAME")
def street1 = column[String]("STREET1")
def street2 = column[String]("STREET2")
def Zip = column[String]("Zip")
def * = (city, stateName, street1, street2, Zip)
}
val addresses = TableQuery[Addresses]
def create(city:String, stateName:String, street1:String, street2:String, Zip:String) {
DB.withSession{ implicit session =>
addresses += (city, stateName, street1, street2, Zip)
}
}
}
ありがとうございました!
試してみてください
(addresses returning addresses.map(_.id)) += (city, stateName, street1, street2, Zip)
まだテストしていませんが、表示されています ここ
デフォルト値のフィールドがある場合は、これを試すことができます
addresses.map(c => (c.city, c.stateName, c.street1)) returning addresses.map(_.id) += (city, stateName, street1)