0
我向數據庫中插入一個新行,其ID是自動遞增的(「串行」)。如何在插入後獲得id的值?目前,我公司採用以下解決方法:Squeryl獲取串行值
inTransaction {
Schema.table.insert(new Entry(
content = "..."
))
def entries = from(Schema.table)(e => select(e) orderBy(e.id desc)).page(0, 1)
val id = entries.headOption match {
case Some(entry) => entry.id
case None => 0
}
}
如果沒有更簡單的方法,我怎麼能保證這個整個塊將是一個原子操作?
這將如何工作,'myOriginalOld'沒有'id'成員和'new'必須是同一類型爲'myOriginalOld'的。如果'myOriginalOld'提供了'id',我將不得不使用'on(entries)(entry => declare(entry.id is(autoIncremented(「Entry_id_seq」)))''這會導致我的'ExceptionInInitializerError'機。否則它也不會工作... – ideaboxer
您可以使用KeyedEntity。例如,如果你想在你的數據庫中使用最簡單的主鍵,使用類似於 case case class Fuit(id:Long = 0L,color:String)擴展KeyedEntity [Long]' 在你的問題中,你說你想要id來自數據庫。如果是這樣,squeryl對象必須包含id。 – VasyaNovikov