1

オブジェクトの作成後にafterCreateメソッドが呼び出されない理由を知っていますか?このコードを見てください:

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

生成するもの:

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

Companyモデルは次のようになります。

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

よろしくお願いします、エタム。

4

1 に答える 1

1

コールバックによって参照される「ライフサイクル」は、データベースの永続性ライフサイクルです。したがって、この場合、参照される作成は、データベース内のオブジェクトの実際の作成、つまりINSERTです。同様に、beforeUpdateとafterUpdateは、UPDATEステートメントがデータベースに送信される前後の瞬間を指します。

オブジェクトの作成を利用する必要がある場合は、コンストラクターまたはファクトリの通常のScalaメカニズムを使用して、オブジェクトを作成できます。

これは多少の誤称であることに同意しますが、存在するさまざまなORM製品全体で非常に一般的な誤称です。

于 2010-10-29T06:31:41.440 に答える