墨色風(fēng)雨
2023-05-17 17:35:47
我有一個由多個子類(聚合)組成的 JPA 實(shí)體(但這個問題通常很有趣)。我需要在數(shù)據(jù)庫中創(chuàng)建一個與現(xiàn)有條目 90% 相同的新條目(一些業(yè)務(wù)價(jià)值,當(dāng)然 ID 需要不同)。因?yàn)槲覀冃枰趯?shí)體和 TO 之間進(jìn)行映射的 mapstruct,所以我在想“mapstruct 可以為我做這個嗎?” 創(chuàng)建深層副本后,我可以簡單地更新剩余字段并持久化對象。手動編寫復(fù)制構(gòu)造函數(shù)很容易出錯(因?yàn)樾绿砑拥淖侄慰赡軙贿z忘),生成器方法將不勝感激。
2 回答

暮色呼如
TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個贊
是的,您可以使用@DeepClone:
此 Javadoc 包含一個示例: https ://mapstruct.org/documentation/dev/api/org/mapstruct/control/MappingControl.html
@Mapper(mappingControl = DeepClone.class)
public interface CloningMapper {
CloningMapper INSTANCE = Mappers.getMapper( CloningMapper.class );
MyDTO clone(MyDTO in);
}

吃雞游戲
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個贊
是的。但是要小心。如果 MapStruct 在源和目標(biāo)上發(fā)現(xiàn)相同的類型,它將簡單地獲?。ǘ皇强寺。┰搭愋?。除非你為它定義一個方法簽名。
換句話說:仔細(xì)檢查生成的代碼。
添加回答
舉報(bào)
0/150
提交
取消