2015-04-30 5 views
0

-je utiliser Orika Mapper et ont les éléments suivants:Ajouter préfixe automatique en cartographiant les noms des champs

mapperFactory.classMap(BusinessResource.class, BusinessDto.class) 
       .field("content._id", "_id") 
       .field("content.uuid", "uuid") 
       .field("content.created", "created") 
       .field("content.name", "name") 
       .field("content.phone", "phone") 
       .field("content.fax", "fax") 
       .field("content.email", "email") 
       .field("content.address", "address") 
       .field("content.coordinates", "coordinates")... 

Pourquoi je dois l'utiliser de cette façon? En raison de BusinessResoruce:

public class BusinessResource extends Resource<Business> { 
    private Business content; 
    private Link[] links; 
} 

Est-il possible de faire un certain préfixe automatique par correspondance qui ajoutera content. à chaque méthode field?

Nous vous remercions à l'avance

MISE À JOUR # 1: Tentative d'utilisation DefaultFieldMapper et supprimé toutes les applications manuelles - sans succès, mais les liens objet est mis en correspondance par défaut sans aucun problème. Le principal problème avec cette solution:

suggestMappedField(String fromProperty, Type<?> fromPropertyType) 

reçoit les propriétés de BusinessResource qui sont content et links, et c'est la raison pour laquelle l'objet donné lieu si elle est vide ..

Répondre

1

Orika fournir un moyen de donner une indication sur la façon dont faire le mappage automatique: DefaultFieldMapper

Vous pouvez l'utiliser sur les niveaux de la carte de classe ou même enregistrer le mappeur de champ par défaut globalement.

est un exemple:

DefaultFieldMapper myHint = new DefaultFieldMapper() { 
public String suggestMappedField(String fromProperty, Type<?> fromPropertyType) { 
    return "content." + fromProperty; 
}}; 

Vous pouvez créer par défaut

factory.registerDefaultFieldMapper(myHint); 
// OR factory.classMap() ... .byDefault(myHint); 
+0

Ne peut pas faire votre travail de solution .. Tous les champs sont vides, mais dès que j'ajoute le champ ' ("content.id", "id") '- fonctionne bien .. – nKognito

+0

Pouvez-vous s'il vous plaît la cartographie inverse: mapperFactory.classMap (BusinessDto.class, BusinessResource.class) .byDefault (myHint) .register() –

+0

Le même résultat .. tous les champs sauf les liens sont null ou vides. – nKognito