java – 使用MapStruct进行转换时防止循环引用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 使用MapStruct进行转换时防止循环引用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2091字,纯文字阅读大概需要3分钟。
内容图文
![java – 使用MapStruct进行转换时防止循环引用](/upload/InfoBanner/zyjiaocheng/757/9740c7240f4b4cbab18291e25134c3cd.jpg)
今天我开始使用MapStruct为我的项目创建我的Model to DTO转换器,我想知道它是否自动处理循环引用,但事实证明它没有.
这是我测试它的转换器:
package it.cdc.snp.services.rest.giudizio;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import org.springframework.stereotype.Component;
import it.cdc.snp.dto.entita.Avvisinotifica;
import it.cdc.snp.dto.entita.Corrispondenza;
import it.cdc.snp.model.notifica.AvvisoDiNotificaModel;
import it.cdc.snp.model.notifica.NotificaModel;
import it.cdc.snp.model.procedimento.ProcedimentoModel;
@Component
@Mapper(componentModel="spring")
public interface NotificaMapper {
NotificaMapper INSTANCE = Mappers.getMapper( NotificaMapper.class );
@Mappings({
@Mapping(source = "avvisinotificas", target = "avvisinotificas"),
})
NotificaModel<ProcedimentoModel> corrispondenzaToNotificaModel(Corrispondenza notifica);
@Mappings({
@Mapping(source = "corrispondenza", target = "notifica"),
})
AvvisoDiNotificaModel avvisinotificaToAvvisoDiNotificaModel(Avvisinotifica avvisinotifica);
}
这是测试:
Notifica sourceObject1 = new Notifica();
sourceObject1.setId(new Long(1));
Avvisinotifica sourceObject2 = new Avvisinotifica();
sourceObject2.setId(new Long(11));
List<Avvisinotifica> tests= new ArrayList<>();
tests.add(sourceObject2);
sourceObject1.setAvvisinotificas(tests);
sourceObject2.setCorrispondenza(sourceObject1);
NotificaModel destObject1 = new NotificaModel<>();
Avvisinotifica destObject2 = new Avvisinotifica();
NotificaModel converted = mapper.corrispondenzaToNotificaModel(sourceObject1);
Notifica,Avvisinotifica和他们各自的模型都是带有setter和getter的简单POJO所以我认为不需要发布代码(Notifica扩展Corrispondenza,如果你想知道的话)
这段代码进入了一个无限循环,没有什么比这更令人惊讶的了(虽然我希望它能处理这些情况).
虽然我认为我可以找到一种优雅的方式来手动处理它(我正在考虑使用带有@MappingTarget的方法来插入Referenced对象)我想知道是否有某种方法告诉M??apStruct如何自动处理循环引用.
解决方法:
尚未对MapStruct中的此类案例进行检测或特殊处理,但有一个功能请求:#469.如果您有任何想法如何处理周期,请在该问题上发表评论.
内容总结
以上是互联网集市为您收集整理的java – 使用MapStruct进行转换时防止循环引用全部内容,希望文章能够帮你解决java – 使用MapStruct进行转换时防止循环引用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。