我正在使用 slick 2.0.1(如果需要可以升级),我想从数据库(postgresql)中检索自动递增值。
我已经看到了一些关于 SO 的问题,但是它们已经相当老了,我希望有比这个答案建议的更好的方法:Scala & Play!& Slick & PostgreSQL 自动增量
def autoInc = name ~ price ~ description returning id
def add(product: Product)(implicit s:Session): Long = {
Products.autoInc.insert(p.name, p.price, p.description)
}
您必须在 autoInc 方法中重新输入模型的字段,这会重复我希望避免的事情。
有没有更好的方法或者我应该这样做?
我选择的方式是让我的模型 poso (普通的旧 scala 对象,如):
case class Product(.....)
然后我的 dao 类看起来像:
class ProductDao extends ProductDao {
class Products(tag: Tag) extends Table[Product](tag, "products") {
def id = ...
def name = ..
def * = (id, name) <> (Product.tupled, Product.unapply)
}
val products = TableQuery()
}
另外作为旁注,对于 * 方法,我是否必须输入所有类似的属性,或者还有更好的方法吗?