Domanda

sai perché afterCreate metodi non vengono richiamati dopo aver creato l'oggetto? Guardate questo codice:

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

che produce:

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

Il modello azienda guarda come questo:

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

Grazie in anticipo, Etam.

È stato utile?

Soluzione

Il "ciclo di vita" che viene indicato dai callback è il ciclo di vita del database di persistenza. Quindi, in questo caso, il creare che si sta riferendo è la creazione effettiva, o INSERT, l'oggetto nel database. Allo stesso modo, il PrimaDiAggiornare e DopoAggiornamento si riferiscono al momento prima e dopo un'istruzione UPDATE viene inviato al database.

Se avete bisogno di attingere alla creazione dell'oggetto, è possibile farlo attraverso i normali meccanismi di Scala di un costruttore o di qualche fabbrica per creare gli oggetti.

Mentre sono d'accordo che è un po 'un termine improprio, è un termine improprio che è molto comune in tutto i vari prodotti ORM che esistono.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top