Pregunta

¿sabe por qué afterCreate métodos no son invocados después de crear el objeto? Vistazo a este código:

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

¿Qué produce:

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

Las miradas modelo de empresa como esta:

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

Gracias de antemano, Etam.

¿Fue útil?

Solución

El "ciclo de vida" que se refiere a las devoluciones de llamada es el ciclo de vida de la persistencia de base de datos. Por lo tanto, en este caso, el crear la que se refiere a la creación real es, o insertar, del objeto en la base de datos. Del mismo modo, el BeforeUpdate y AfterUpdate se refieren al momento antes y después de una instrucción UPDATE se envía a la base de datos.

Si necesita grifo en la creación del objeto, puede hacerlo a través de los mecanismos normales Scala de un constructor o alguna fábrica para crear los objetos.

Aunque estoy de acuerdo que es un poco de un término equivocado, es un término equivocado que es muy común en los diferentes productos que existen ORM.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top