développeur principal de Salat ici.
Comme Milan l'a suggéré, créez une classe de cas pour votre clé composite :
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 */ )
Si vous vous opposez à "_id" comme nom de champ, vous pouvez utiliser un remplacement global dans le contexte pour remapper "_id" sur "naturalKey", ou fournir des remplacements @Key ad hoc sur chaque objet.
Personnellement, je n'aime pas donner au _id un nom différent dans vos modèles, car vos requêtes Mongo doivent utiliser la clé sérialisée "_id" tandis que toute votre logique métier doit utiliser le nom du champ de classe de cas ("naturalKey" ou autre), mais YMMV .
PS Notre liste de diffusion est à http://groups.google.com/group/scala-salat - Je verrai votre question plus rapidement que Stack Overflow.