2014-08-29 9 views
5

'dan döndürülmesine izin verir. Aşağıdaki kodda kayıtlarımı düzgün ekleyebilirim. Ancak, eklenen değerin kimliğini geri almak isterim, böylece nesneyi yanıtımın bir parçası olarak iade edebilirim. Oynatım Slick 2.1.0 Bu DBMS, yalnızca tek bir AutoInc sütununun bir INSERT

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

yüzden üzere eke değiştirmeyi denedim:

val something = (Entries returning Entries.map(_.id)) += Entry(None, name, age, lang) 

Ama şu istisna olsun: http://slick.typesafe.com/doc/2.1.0/queries.html

":

SlickException: This DBMS allows only a single AutoInc column to be returned from an INSERT 

burada bununla ilgili bir not var Birçok veritabanı sisteminin, yalnızca tablonun olması gereken tek bir sütunun döndürülmesine izin verdiğini unutmayın. artırıcı birincil anahtar. Diğer sütunları için sorarsanız bir SlickException (veritabanı aslında onu destekleyen sürece) ". zamanında

atılır Fakat Kimlik sütunu talep sadece nasıl söylemez.

+0

'Entries' bir yok mu birincil anahtar mı? 'id 'sütununun bir tanesidir,' Yok 'seçeneğine' Hiçbiri 'aktarıyorsunuz, bu da bana isteğe bağlı olduğunu düşündürüyor. –

+0

Teşekkürler! Haritalarımı düşünmemi sağladın ve geri döndüm ve kontrol ettim. Tablo eşlemesinde birincil anahtar def ve otomatik artış def'i geri almayı başardım. –

+0

Rica ederim. –

cevap

7

Ende Nue yukarıda bana verdi ipucu sorun bulmak. sütun tablo tanımı birincil anahtar ve otomatik artışı işaretlenmiş olması gerekiyordu.

class Entries(tag: Tag) extends Table[Entry](tag, "entries") { 

    def id = column[Option[Long]]("id", O.PrimaryKey, O.AutoInc) 
    def name = column[String]("name") 
    def age = column[Long]("age") 
    def lang = column[String]("lang") 

    def * = (id, name, age, lang).shaped <> ((Entry.apply _)tupled, Entry.unapply _) 
} 

O.PrimaryKey, O.AutoInc

+0

Bu hala sorunumu çözmüyor. Bu çözüm sizin için hatayı mı çözdü? – Maverick

+0

Bu sorunun daha iyi bir genel bakış https://github.com/slick/slick/issues/1561 olduğunu –

İlgili konular