MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Quelle est la meilleure façon de gérer les clés composites lors de l'utilisation de Salat avec MongoDB ?

développeur principal de Salat ici.

Comme Milan l'a suggéré, créez une classe de cas pour votre clé composite :

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 */ )

Si vous vous opposez à "_id" comme nom de champ, vous pouvez utiliser un remplacement global dans le contexte pour remapper "_id" sur "naturalKey", ou fournir des remplacements @Key ad hoc sur chaque objet.

Personnellement, je n'aime pas donner au _id un nom différent dans vos modèles, car vos requêtes Mongo doivent utiliser la clé sérialisée "_id" tandis que toute votre logique métier doit utiliser le nom du champ de classe de cas ("naturalKey" ou autre), mais YMMV .

PS Notre liste de diffusion est à http://groups.google.com/group/scala-salat - Je verrai votre question plus rapidement que Stack Overflow.