Hauptentwickler von Salat hier.
Erstellen Sie, wie von Milan vorgeschlagen, eine Fallklasse für Ihren zusammengesetzten Schlüssel:
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 */ )
Wenn Sie „_id“ als Feldnamen ablehnen, können Sie eine globale Außerkraftsetzung im Kontext verwenden, um „_id“ „naturalKey“ neu zuzuordnen, oder Ad-hoc-@Key-Überschreibungen für jedes Objekt bereitstellen.
Ich persönlich mag es nicht, der _id in Ihren Modellen einen anderen Namen zu geben, da Ihre Mongo-Abfragen dann den serialisierten Schlüssel "_id" verwenden müssen, während Ihre gesamte Geschäftslogik den Feldnamen der Fallklasse ("naturalKey" oder was auch immer) verwenden muss, aber YMMV .
P.S. Unsere Mailingliste finden Sie unter http://groups.google.com/group/scala-salat - Dort sehe ich Ihre Frage schneller als bei Stack Overflow.