取得したケース クラスを使用してドメイン モデルを 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にシリアル化されるものであるため、ケースクラスを使用する必要があります...