0
我期待使用Scala 2.9.x和Casbah實現我的DAO訪問層。 鑑於我的實體的情況下類參數:斯卡拉+卡斯巴對象映射的良好做法
case class Price (Id: Option[String], Price: Double, ItemName: String)
和我的BSON文檔的樣子:
{
"_id" : ObjectId("55dd1874b46f7178c8ddb737"),
"ItemName" : "Beet",
"Price" : "6"
}
我試圖創建一個屬性
override var prices: List[Price] =
db("prices").find.toList.map(
o => Price(Some(o("_id").toString),
o("Price").toString.toDouble,
o.getAs[String]("ItemName").get))
這裏是我的主要關注: 1.映射字段看起來有點麻煩,應該有一些自動化。我知道我可以使用從導入net.liftweb.json。{DefaultFormats,序列化}或任何其他的解析器,但我很確定應該有更接近Casbah的東西。可能它可能是其他一些MongoDB Scala ORM。 2.我不喜歡把它放到var的想法。什麼是暴露數據的更好方式?我應該使用財產嗎? 3.什麼是entites的最佳實踐(你可以看到我使用的情況下,類參數沒有任何身體)
給了薩拉特一試的定義,現在我有一個不同的錯誤: ' case類銷售(@Key(「_ id」)Id:Option [String],Date:Date,SaleDetails:List [SaleDetail])' my json: '{ 「_id」:的ObjectId( 「55f13d293aab21313e576d34」), 「日期」: 「2015-06-24T22:22:33.875Z」, 「SaleDetails」:[{ 「ITEMNAME」: 「胡蘿蔔」 , 「價格」:1.6000000000000001, 「單位」:9 } ] }' 我想讀銷售: '覆蓋VAR銷售:列表[出售] = 分貝( 「銷售」)找到。 .toList.map( obj => 磨碎機[Sale] .asObject(obj))' 錯誤: 參數t ype不匹配 – grimcoder
我總是使用類型ObjectId作爲case類的_id字段。這裏是我的testCaseClass的定義 'case class TestCaseClass(_id:ObjectId,name:String,age:Int,address:List [AddressCase])' – waterscar
使用模型的ObjectId使這個類MongoDB具體哪個不好,因爲我不希望我的業務和/或UI層知道持久性的細節。 – grimcoder