vigtigste Salat-udvikler her.
Som Milan foreslog, opret en sagsklasse for din sammensatte nøgle:
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 */ )
Hvis du gør indsigelse mod "_id" som feltnavn, kan du bruge en global tilsidesættelse i konteksten til at omdanne "_id" til "naturalKey", eller levere ad hoc @Key-tilsidesættelser på hvert objekt.
Jeg kan personligt ikke lide at give _id et andet navn i dine modeller, da dine Mongo-forespørgsler skal bruge den serialiserede nøgle "_id", mens al din forretningslogik skal bruge case-klassens feltnavn ("naturalKey" eller hvad som helst), men YMMV .
P.S. Vores mailingliste er på http://groups.google.com/group/scala-salat - Jeg vil se dit spørgsmål hurtigere der end Stack Overflow.