principale sviluppatore Salat qui.
Come suggerito da Milano, crea una classe case per la tua chiave composita:
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 */ )
Se ti opponi a "_id" come nome di campo, puoi utilizzare un override globale nel contesto per rimappare "_id" a "naturalKey" o fornire sostituzioni ad hoc @Key su ciascun oggetto.
Personalmente non mi piace dare a _id un nome diverso nei tuoi modelli poiché le tue query Mongo devono utilizzare la chiave serializzata "_id" mentre tutta la tua logica aziendale deve utilizzare il nome del campo della classe case ("naturalKey" o altro), ma YMMV .
PS La nostra mailing list si trova all'indirizzo http://groups.google.com/group/scala-salat - Vedrò la tua domanda più velocemente di Stack Overflow.