MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Qual è il modo migliore per gestire le chiavi compsite quando si utilizza Salat con MongoDB?

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.