2012-12-01 21 views

回答

3

乍一看像這樣可以工作:

import org.joda.time._ 
object Db extends Instance (entities = ...) { 
    override def save [T <: AnyRef : TypeTag] (v : T) 
    = v match { 
     case v : Artist with Persisted => 
      super.save(v.copy(updatedAt = DateTime.now())) 
     case v : Artist => 
      super.save(v.copy(createdAt = DateTime.now())) 
     // ... so on for other entities 
     case v => 
      super.save(v) 
     } 
} 

但後來你會如何從頭開始創建這些藝術家的實例?這些日期字段是否應該使用凌亂的null或空值日期值或者是否應將其包裝在Option s?那麼,無論是那些應該解決的問題,但這裏是另一種選擇:

import org.joda.time._ 
case class Artist 
    (name : String, 
    updatedAt : DateTime = DateTime.now(), 
    createdAt : DateTime = DateTime.now()) 

object Db extends Instance (entities = ...) { 
    override def save [T <: AnyRef : TypeTag] (v : T) 
    = v match { 
     case v : Artist with Persisted => 
      super.save(v.copy(updatedAt = DateTime.now())) 
     case v => 
      super.save(v) 
     } 
} 

我得告訴你整個問題不會覺得很自然的我。我無法想象那種有點行爲的情景。但是我再次向您介紹了選項。

相關問題