Вопрос

Знаете, почему методы послекрещения не вызывают после создания объекта? Посмотрите на этот код:

val c = Company.create
println(">>> After create")
c.save

Который производит:

c: com.subeli.officebook.model.Company = 0
>>> After create
create packages
create packages
save packages

Модель компании выглядит так:

object Company extends Company with LongKeyedMetaMapper[Company] with CRUDify[Long, Company] {
  override def dbTableName = "company"

  override def beforeCreate = createPackages _ :: super.beforeCreate
  override def afterCreate = createPackages _ :: super.afterCreate
  override def afterSave = savePackages _ :: super.afterSave
  override def afterUpdate = savePackages _ :: super.afterUpdate

  private def createPackages(c: Company): Unit = println("create packages")
  private def savePackages(c: Company): Unit = println("save packages")
}

Спасибо заранее, этама.

Это было полезно?

Решение

«Жизненный цикл», который называется обратными вызовами, является жизненный цикл сохранения базы данных. Таким образом, в этом случае создается создание, которое называется фактическим созданием или вставляет объект в базе данных. Аналогично, FOREUPDATE и AFTOUPDATE обращаются к моменту до и после отправки оператора обновления в базу данных.

Если вам нужно подключить к созданию объекта, вы можете сделать это через обычные SCALA-механизмы конструктора или некоторых заводов для создания объектов.

Пока я согласен с тем, что это несколько неправильно, это неправильно, который очень распространен на протяжении различных продуктов ORM, которые существуют.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top