使用我得到的案例类在 scala 中实现我的域模型
abstract class Entity {
val _id: Option[BSONObjectID]
val version: Option[BSONLong]
}
以及几个定义不同实体的案例类,例如
case class Person (
_id: Option[BSONObjectID],
name: String,
version: Option[BSONLong]
) extends Entity
我需要的是一种稍后从对实体进行操作的通用方法设置 _id 和版本的方法,因为我必须在所有实体上共享此行为并希望避免将其写下数百次 ;-)。我很想能够
def createID(entity: Entity): Entity = {
entity.copy(_id = ..., version = ...)
}
...但是当然这不会编译,因为实体没有复制方法。它由编译器为每个单独的案例类生成......
在scala中实现这一目标的最佳方法是什么?
为了防止有人问:我必须使用案例类,因为这是第三方库从我收到的请求中为我提取的内容,而案例类实例是稍后序列化回 BSON / MongoDB 的内容......