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