Я использую 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(.....)
И тогда мой класс дао выглядит так:
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()
}
Также в качестве примечания: для метода * мне нужно вводить все подобные свойства или для этого есть лучший способ?