ここに主なSalat開発者がいます。
Milanが提案したように、複合キーのケースクラスを作成します。
case class FooKey(someRelatedId: String, email: String)
case class Foo(@Key("_id") naturalKey: FooKey) {
// use @Persist if you want these fields serialized verbatim to Mongo - see https://github.com/novus/salat/wiki/Annotations for details
@Persist val email = naturalKey.email
@Persist val someRelatedId = naturalKey.someRelatedId
}
object FooDAO extends SalatDAO[Foo, FooKey](collection = /* some Mongo coll */ )
フィールド名として「_id」に反対する場合は、コンテキストでグローバルオーバーライドを使用して、「_ id」を「naturalKey」に再マップするか、各オブジェクトにアドホック@Keyオーバーライドを指定できます。
モデルで_idに別の名前を付けるのは個人的には好きではありません。その場合、Mongoクエリではシリアル化されたキー「_id」を使用する必要がありますが、すべてのビジネスロジックではケースクラスのフィールド名(「naturalKey」など)を使用する必要がありますが、YMMV 。
P.S.メーリングリストは