2016-03-07 81 views
1

我需要替換Orika的Dozer映射,並且我想知道是否可以在Orika中執行此操作mapper.map(obj1, obj2)?到目前爲止,我已經看到,對於目標,您只能指定類的類型而不是對象,所以我假設每次都會創建一個新實例。但在這種情況下,我只需要使用DTO的某些字段更新先前找到的實體對象。那可能嗎?Orika如何在不實例化新目標對象的情況下映射對象

回答

1

是,有可能既地圖源對象A到目標類B - 然後Orika本身將實例化B - 或的B一個已創建的實例。

// Let Orika create instance of B 
A source = new A(); 
BoundMapperFacade<A, B> mapper = mapperFactory.getMapperFacade(A.class, B.class); 
B target = mapper.map(source); 

// Create instance of B yourself and let Orika fill it 
A source = new A(); 
B target = new B(); 
BoundMapperFacade<A, B> mapper = mapperFactory.getMapperFacade(A.class, B.class); 
mapper.map(source, target); 

你可以設置自己的target情況下以某種方式第二種情況 - Orika只會從A屬性映射到您在ClassMap定義B

+0

該怎麼辦,讓內部對象發生這種行爲。 –

+0

@ShineedBasheer - Orika會自動實例化所有內部對象,或者如果他們在那裏會使用現有的對象。 –

+0

但我測試了相同的值來映射持久化對象與值對象。其實我想合併這些對象。通過保留對象上的persistencr相關狀態。對象很複雜,它包含內部對象列表和每個內部對象都有遞歸結構。正如你所說,奧裏卡映射了異常物體。但是對於內部對象,它正在創建新的對象 –

相關問題