Implementing my domain model in scala using case classes I got
abstract class Entity { val _id: Option[BSONObjectID] val version: Option[BSONLong] } and several case classes defining the different entities like
case class Person ( _id: Option[BSONObjectID], name: String, version: Option[BSONLong] ) extends Entity What I need is a way to set the _id and version later on from a generic method which operates on an Entity because I have to share this behavior over all Entities and want to avoid writing it down hundreds of times ;-). I would love to be able to
def createID(entity: Entity): Entity = { entity.copy(_id = ..., version = ...) } ...but of course this does not compile since an Entity has no copy-method. It is generated for each single case class by the compiler...
What is the best way to achieve this in scala?
To prevent somebody asking: I have to use case classes since this is what the third-party-library is extracting for me from the requests I get and the case class instances are what is serialized back to BSON / MongoDB later on...
Entity[T](_id: ..., version: ..., data: T).Twould be probably another case class with the appropriate data.