我正在用 mongodb 编写一个 play2.1 应用程序,我的模型对象有点广泛。在更新数据库中的条目时,我需要将来自表单的临时对象与数据库中的内容进行比较,这样我就可以构建更新查询(并记录更改)。
我正在寻找一种方法来一般地获取 2 个实例并获得它们的差异。迭代每个数据成员很长,硬编码并且容易出错(如果 a.firstName.equalsIgnoreCase(b.firstName))所以我正在寻找一种方法来迭代所有数据成员并水平比较它们(名称映射 - > value 可以,或者我可以信任的列表每次都以相同的顺序枚举数据成员)。
有任何想法吗?
case class Customer(
id: Option[BSONObjectID] = Some(BSONObjectID.generate),
firstName: String,
middleName: String,
lastName: String,
address: List[Address],
phoneNumbers: List[PhoneNumber],
email: String,
creationTime: Option[DateTime] = Some(DateTime.now()),
lastUpdateTime: Option[DateTime] = Some(DateTime.now())
)
以下所有三个解决方案都很棒,但我仍然无法获得该字段的名称,对吗?这意味着我可以记录更改,但不能记录它影响的字段...