2009-12-16 11 views
5

Dozer almak için uğraşırken, oldukça basit olduğunu düşündüğüm bir şey için irademizi bükmek için uğraşıyorum. Aralarında eşlemek istediğim iki benzer modelim var, ancak biri diğerinden daha 'derin' bir hiyerarşiye sahip ve bu da koleksiyonlarla uğraşırken sorunlara neden oluyor.Önemsiz Dozer eşleştirmeleri

Kaynak sınıfları::

class Foo { 
    String id; 
    NameGroup nameGroup; 
    // Setters/Getters 
} 

class NameGroup { 
    private List<Name> names; 
    // Setters/Getters 
} 

class Name { 
    private String nameValue; 
    // Setters/Getters 
} 

Hedef sınıfları:

Foo.id -> Bar.barId // Simple enough 

Ama:

class Bar { 
    private String barId; 
    private BarNames barNames; 
    // Setters/Getters 
} 

class BarNames { 
    private List<String> names; 
    // Setters/Getters 
} 

Şimdi şu tek yönlü eşleştirmeleri istiyorum aşağıdaki sınıfları dikkate alın sonra ihtiyaç:

Foo.nameGroup.names.nameValue -> Bar.barNames.names 

Foo.nameGroup.names'daki her Name örneğinin, BarNames.names listesine String eklenmesi gerekir. Mümkün mü?

cevap

5

Bu, "Ad" sınıfınız bir String kurucu içerdiği sürece Dozer ile kolayca yapılabilir.

Dozer docs (http://dozer.sourceforge.net/documentation/simpleproperty.html) bir alıntı:

Veri türü coversion Dozer haritalama motor tarafından otomatik olarak gerçekleştirilir. (Bu tüm çift yönlü olan)

...

Dize Kompleks Tip bir dize yapıcısı

içeriyorsa Kompleks Türü: Şu anda, Dozer dönüşümlerin aşağıdaki türlerini destekler. ..

Bunu yukarıdaki gibi sınıflarınızla test ettim (aynı sorunla sıkışmıştım) ve mükemmel çalışıyor. Burada kullandığım eşleştirmedir:

+0

P.S. Bu da ipuçları olmadan çalışır – pjmyburg

+0

Teşekkürler @pjmyburg - Ben bunu bir vereceğim. – teabot

İlgili konular