MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Qual é a melhor maneira de lidar com chaves compostas ao usar Salat com MongoDB?


principal desenvolvedor Salat aqui.

Como Milan sugeriu, crie uma classe de caso para sua chave composta:
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 você se opuser a "_id" como um nome de campo, poderá usar uma substituição global no contexto para remapear "_id" para "naturalKey" ou fornecer substituições ad hoc de @Key em cada objeto.

Eu pessoalmente não gosto de dar ao _id um nome diferente em seus modelos, pois suas consultas Mongo devem usar a chave serializada "_id", enquanto toda a sua lógica de negócios deve usar o nome do campo de classe de caso ("naturalKey" ou qualquer outro), mas YMMV .

P.S. Nossa lista de e-mails está em http://groups.google.com/group/scala-salat - Vou ver sua pergunta mais rápido lá do que Stack Overflow.