główny programista Salat tutaj.
Jak zasugerował Milan, utwórz klasę przypadków dla swojego klucza złożonego:
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 */ )
Jeśli sprzeciwisz się „_id” jako nazwie pola, możesz użyć globalnego zastąpienia w kontekście, aby zmienić odwzorowanie „_id” na „naturalKey” lub podać ad hoc nadpisania @Key dla każdego obiektu.
Osobiście nie lubię nadawać _id innej nazwy w twoich modelach, ponieważ wtedy twoje zapytania Mongo muszą używać zserializowanego klucza "_id", podczas gdy cała logika biznesowa musi używać nazwy pola klasy przypadku ("naturalKey" lub cokolwiek), ale YMMV .
PS Nasza lista mailingowa znajduje się pod adresem http://groups.google.com/group/scala-salat - Zobaczę Twoje pytanie szybciej niż Stack Overflow.