Z moim modelem danych, który jest w zasadzie drzewem z rodzicami potomnymi, Dozer ma problemy z powodzeniem mapując je, interpretując pole (które używa typu interfejsu jako parametru) jako będąc klasą i próbując utworzyć instancję za pomocą konstruktora. Powoduje to następujący wyjątek;Spychacz próbujący odwzorować klasę na jej interfejs
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>()
To jest odwzorowaniem tej samej klasy, a ile spycharek poprawnie identyfikuje pole dominującej w klasie źródłowego jako typu DataWarehouse, ponieważ metoda zestaw od klasy dla jego rodzica Moduł wykorzystuje interfejs modelu jako jego parametr wydaje się być próbą utworzenia typu Modelu, co oczywiście kończy się niepowodzeniem, ponieważ Model jest interfejsem bez konstruktora, a nie Datawarehouse, jak wskazuje pole klasy źródłowej.
Wiem o używaniu fabryk fasoli do zmiany standardowych zachowań mapowania, ale jestem zaskoczony, że to byłby jedyny sposób, aby rozwiązać ten problem. Wydaje mi się, że Dozer ma już potrzebne informacje, ponieważ identyfikuje typ klasy źródłowej, i nietypowe dla mnie, że spróbuje utworzyć instancję interfejsu określonego przez sygnaturę settera, a nie typ, który próbuje odwzorować.
Wszelkie sugestie?
Czy masz konfigurację spychacza powiązaną z tą klasą? – OmegaZiv