我一直在使用一個Web應用程序Play2 MongoDB的互動(通過萊昂拉德利整潔的SBT插件)內薩拉特。很好,但是因爲我們有很多嵌套的case case DTO(爲了反映嵌套的JSON/BSON模型定義),所以我們想要在基本模型類型的伴隨對象中整齊地定義嵌套case類DTO。我可以通過使用伴侶對象來管理薩拉特案例類DTO的範圍嗎?
這可以防止在我們的Salat數據訪問層中擴散的案例類DTO的湯中的命名空間衝突。例如,我們定義了一個「描述」案例類,但是它爲不同的模型對象重新定義,所以我們想要一個簡潔的方式來命名它。我們試圖用一個同伴對象用於此目的,就像這個小片段/例如:
package models.mongo
import com.novus.salat._
import com.mongodb.casbah.Imports._
import se.radley.plugin.salat._
case class TestSalatDto(
id: ObjectId = new ObjectId,
title: String,
description: TestSalatDto.Description)
object TestSalatDto {
case class Description(
brief: String,
full: String)
}
這一切編譯精美,但在運行時將失敗,com.novus.salat.util.ToObjectGlitch:參數類型不匹配在從Mongo解組期間。
如果我們簡單地將伴侶對象定義切換到包定義(封裝DTO湯稍微混亂的方式),那麼所有運行正常(解組工作可以)。
我很困惑,爲什麼在運行時聲明對象中的case類失敗;在對象中定義事例類(Salat DTO)有沒有訣竅?
你仍然得到錯誤,如果您導入TestSalatDto._,然後直接使用說明?也許它需要在範圍內? – Brian 2013-02-14 01:58:58