2013-07-01 20 views
8

Temel olarak ebeveynleri olan bir ağaç olan veri modelim ile Dozer, bir alanı (parametre olarak arabirim türünü kullanan) bir alanı yorumladığı için sorunları başarıyla eşleştiriyor. bir sınıf olmak ve onu bir kurucuyla başlatmaya çalışmak. Bu, aşağıdaki istisna ile sonuçlanır; Dozer sınıfını arabirimiyle eşleştirmeye çalışıyor

ERROR [MappingProcessor] - Field mapping error --> 
MapId: null 
Type: null 
Source parent class: com.*.shared.model.Module 
Source field name: parent 
Source field type: class com.*.shared.model.Datawarehouse 
Source field value: com.*[email protected] 
Dest parent class: com.*.shared.model.Module 
Dest field name: parent 
Dest field type: com.*.shared.model.Model 
org.dozer.MappingException: java.lang.NoSuchMethodException: com.*.shared.model.Model.<init>() 

Bu

aynı sınıf eşleme ve onun ana için modül sınıf ayar yöntemi olarak model arayüzü kullandığından Dozer iken doğru, tip Datawarehouse sahip olarak kaynak sınıfı üst alanı belirten onun Parametre, Modelin türünü örneklemeye çalışmaktadır, tabii ki kaynak, alan sınıfının belirttiği gibi Model, Datawarehouse yerine bir kurucu olmayan bir arayüzdür.

Standart haritalama davranışını değiştirmek için fasülye fabrikalarını kullanmayı biliyorum, ancak bunun bu sorunu çözmenin tek yolu olacağına şaşırdım. Bana öyle geliyor ki, Dozer, kaynak sınıf tipini tanımladığından beri ihtiyaç duyduğu bilgilere sahip ve bana göre, haritanın üzerinde çalışmayı denediği türden değil, belirleyicinin imzasıyla belirlenen arabirimi başlatmaya çalışacağım.

Herhangi bir öneriniz var mı?

+3

Bu sınıfla ilgili Dozer yapılandırması var mı? – OmegaZiv

cevap

2

Dozer xml yapılandırmasında dozer a-ipucu ve b-ipucu etiketlerini kullanarak bu sorunu çözebilirsiniz. Shoukd dozer'ın hangi sınıfın arabirim yerine oturduğunu belirtmek.