itération sur le cas de la classe de données des membres
Je suis en train d'écrire une play2.1 application avec mongodb, et mon modèle d'objet est un peu vaste. lors de la mise à jour d'une entrée dans la base de données, j'ai besoin de comparer la température de l'objet à venir à partir de la forme avec ce qui est dans la DB, donc je peux construire la requête de mise à jour (et enregistrer les modifications).
je suis à la recherche d'un moyen de génériquement prendre 2 instances et obtenir un diff. itération sur chaque membre de données est longue, codée en dur et sujettes à erreur (si un.prénom.equalsIgnoreCase(b.prenom)) donc je suis à la recherche d'un moyen pour itérer sur tous les membres de données et de les comparer à l'horizontale (une carte de nom -> valeur de la faire, ou une liste que je peux faire confiance à énumérer les membres de données dans le même ordre à chaque fois).
des idées?
case class Customer(
id: Option[BSONObjectID] = Some(BSONObjectID.generate),
firstName: String,
middleName: String,
lastName: String,
address: List[Address],
phoneNumbers: List[PhoneNumber],
email: String,
creationTime: Option[DateTime] = Some(DateTime.now()),
lastUpdateTime: Option[DateTime] = Some(DateTime.now())
)
tous les trois solutions ci-dessous sont grands, mais je ne peux toujours pas obtenir le nom du champ, à droite? cela signifie que je peux me connecter le changement, mais pas dans quel domaine il a touché...
OriginalL'auteur Ehud Kaldor | 2013-07-24
Vous devez vous connecter pour publier un commentaire.
Expansion sur @Malte_Schwerhoff réponse, vous pourriez potentiellement créer un récursif diff méthode qui, non seulement a généré l'index de différences, mais les mappé à la nouvelle valeur à l'indice - ou, dans le cas d'imbrication des types de Produits, une carte de la sous-Produit de différences:
Étendre sur le cas d'utilisation de cette réponse:
OriginalL'auteur Shadowlands
Peut-être
productIterator
est ce que tu voulais:OriginalL'auteur Eastsun
Vous pouvez utiliser le produit d'itérateur, et match sur les éléments si vous souhaitez utiliser non-standard de l'égalité comme
String.equalsIgnoreCase
.Cas d'utilisation:
OriginalL'auteur Malte Schwerhoff