belangrijkste Salat-ontwikkelaar hier.
Maak, zoals Milan voorstelde, een hoofdletterklasse voor uw samengestelde sleutel:
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 */ )
Als u bezwaar maakt tegen "_id" als veldnaam, kunt u een globale overschrijving in de context gebruiken om "_id" opnieuw toe te wijzen aan "naturalKey", of ad-hoc @Key-overschrijvingen voor elk object te geven.
Ik hou er persoonlijk niet van om de _id een andere naam te geven in uw modellen, omdat uw Mongo-query's dan de geserialiseerde sleutel "_id" moeten gebruiken, terwijl al uw bedrijfslogica de veldnaam van de hoofdletterklasse ("naturalKey" of wat dan ook) moet gebruiken, maar YMMV .
PS Onze mailinglijst staat op http://groups.google.com/group/scala-salat - Ik zie je vraag daar sneller dan Stack Overflow.