Question

Savez-vous pourquoi AfterCreate méthodes ne sont pas invoquées après la création de l'objet? Regardez ce code:

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

Ce qui produit:

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

Le modèle de l'entreprise se présente comme suit:

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

Merci à l'avance, Etam.

Était-ce utile?

La solution

Le « cycle de vie » qui est appelé par les callbacks est le cycle de vie de la persistance de la base de données. Donc, dans ce cas, la créer qui est en cours visé est la création effective ou INSERT, de l'objet dans la base de données. De même, le BeforeUpdate et AfterUpdate font référence au moment avant et après une instruction UPDATE est envoyé à la base de données.

Si vous avez besoin de puiser dans la création de l'objet, vous pouvez le faire à travers les mécanismes normaux Scala d'un constructeur ou d'une usine pour créer les objets.

Je conviens que c'est un peu un abus de langage, il est un abus de langage qui est très commun dans les divers produits ORM qui existent.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top