Подтвердить что ты не робот

Возврат идентификатора AutoInc после вставки в Slick 2.0

Я посмотрел на концы земли, чтобы ответить на этот вопрос. На слайке 2.0 мало информации. Ниже приведен мой код для моей модели Addresses, как бы я мог создать метод, возвращающий идентификатор после его вставки?

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)
        }
      }
    }

Спасибо!

4b9b3361

Ответ 1

Try

(addresses returning addresses.map(_.id)) += (city, stateName, street1, street2, zip)

не тестировали его, но он показан здесь

Ответ 2

Если у вас есть поля со значениями по умолчанию, вы можете попробовать это

addresses.map(c => (c.city, c.stateName, c.street1)) returning addresses.map(_.id) += (city, stateName, street1)