2017-07-18 26 views
0

モデルマッパーを使用してエンティティとDTOオブジェクトを変換するSpringアプリケーションがあります。私はEntityのZonedDateTimeオブジェクトを表すStringをDTOに持っています。 SpringAppConfigurationに次のスニペットを書きました。Modelmapperはコンバーター変換メソッドを実行しません

@Bean 
public ModelMapper contactModelMapper() { 

    Converter<String, ZonedDateTime> toZonedDateTimeString = new AbstractConverter<String, ZonedDateTime>() { 
     @Override 
     public ZonedDateTime convert(String source) { 
      DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); 
      LocalDateTime datel = LocalDateTime.parse(source, formatter); 
      ZonedDateTime result = datel.atZone(ZoneId.systemDefault()); 
      return result; 
     } 
    }; 
    Converter<ZonedDateTime, String> toStringZonedDateTime = new AbstractConverter<ZonedDateTime, String>() { 
     @Override 
     public String convert(ZonedDateTime source) { 
      String result = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(source); 
      return result; 
     } 
    }; 

    PropertyMap<Contact, ContactDTO> contactDTOmap = new PropertyMap<Contact, ContactDTO>() { 
     @Override 
     protected void configure() { 
      map().setTenantId(source.getTenant().getTenantId()); 
      //if (source.getCreatedDateTime() != null) map().setCreatedDateTime(source.getCreatedDateTime()); 
      //when(Conditions.isNotNull()).map(source.getCreatedDateTime(), map().getCreatedDateTime()); 
     } 
    }; 

    /* this is for userDTO to BO.. */ 
    PropertyMap<ContactDTO, Contact> contactMap = new PropertyMap<ContactDTO, Contact>() { 
     @Override 
     protected void configure() { 
      map().getTenant().setTenantId(source.getTenantId()); 
     } 
    }; 
    ModelMapper contactModelMapper = new ModelMapper(); 
    contactModelMapper.addMappings(contactDTOmap); 
    contactModelMapper.addMappings(contactMap); 
    contactModelMapper.addConverter(toStringZonedDateTime); 
    contactModelMapper.addConverter(toZonedDateTimeString); 
    return contactModelMapper; 
} 

ご覧のとおり、2つのコンバータがあります。エンティティのDTO文字列からZonedDateTimeオブジェクトに変更されたものは、まったく実行されません。その逆の変換が正しく実行されています。

私はどんな助けでも、これに対する賛辞をいただきたいと思います。私はオンライン読書と実験の多くの後、エラーを解決してきた

おかげ

+0

何か提案がありますか?私が提供すべき情報は何ですか? – kavita

答えて

0

。 addConverterの順番が重要であるようです。エンティティ変換のためのコンバータの後に、エンティティ変換へのdtoコンバータを追加しました。注文が正しく行われるとすぐにコードが機能し始めました。これを投稿すると、modelmapperのドキュメントとして誰かが非常に不安定になるのを助けることができます。

関連する問題