2013-07-01 11 views
8

Con il mio modello di dati, che è fondamentalmente un albero con i figli dei genitori, Dozer ha problemi a mapparli correttamente mentre interpreta un campo (che usa un tipo di interfaccia come parametro) come essere una classe e provare a creare un'istanza con un costruttore. Ciò si traduce nella seguente eccezione;Dozer tenta di associare una classe alla sua interfaccia

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>() 

Questa è una mappatura stessa classe, e mentre Dozer identifica correttamente il campo principale della classe fonte come essendo di tipo Datawarehouse, perché il metodo set sulla classe Module per suo genitore utilizza l'interfaccia modello come parametro, sembra stia tentando di istanziare il tipo di Modello, che naturalmente fallisce in quanto Model è un'interfaccia senza costruttore, piuttosto che Datawarehouse, come indica il campo della classe sorgente.

So di utilizzare bean-factories per modificare il comportamento di mappatura standard, ma sono sorpreso che questo sarebbe l'unico modo per risolvere questo problema. Mi sembra che Dozer abbia già le informazioni di cui ha bisogno dal momento che identifica il tipo di classe di origine, e inusuale per me che proverà a istanziare l'interfaccia specificata dalla firma del setter piuttosto che il tipo che sta tentando di mappare.

Qualche suggerimento?

+3

Avete la configurazione di Dozer relativa a questa classe? – OmegaZiv

risposta

2

È possibile risolvere questo problema utilizzando i tag dozer a-hint e b-hint nella configurazione xml del dozer. Specificare quale classe shoukd dozer instatiate al posto dell'interfaccia.

Problemi correlati