gpt4 book ai didi

java - 使用 ModelMapper 将 DTO 映射到实体(包括异常)

转载 作者:太空宇宙 更新时间:2023-11-04 10:10:28 26 4
gpt4 key购买 nike

我有一个 DTO (OpeningHoursPeriodDTO) 和一个实体 (OpeningHoursPeriod),我想使用 ModelMapper 进行映射。只要我在转换器方法中不抛出任何异常,一切都会按预期正常工作。

这里是转换器的代码:

modelMapper
.createTypeMap(OpeningHoursPeriodDTO.class, OpeningHoursPeriod.class)
.setConverter(converter -> {
OpeningHoursPeriodDTO openingHoursPeriodDTO = converter.getSource();
if (openingHoursPeriodDTO == null) {
return null;
}

if (openingHoursPeriodDTO.getOpen() == null || openingHoursPeriodDTO.getClose() == null) {
throw new BadRequestException("Opening hours and closing hours must be present");
}

if (!Objects.equals(
openingHoursPeriodDTO.getOpen().getDay(),
openingHoursPeriodDTO.getClose().getDay())) {
throw new BadRequestException("Opening and close day for a period must be for the same day");
}

return OpeningHoursPeriod.builder()
.id(openingHoursPeriodDTO.getId())
.day(openingHoursPeriodDTO.getOpen().getDay())
.openTime(LocalTime.parse(openingHoursPeriodDTO.getOpen().getTime(), TIME_FORMATTER))
.closeTime(LocalTime.parse(openingHoursPeriodDTO.getClose().getTime(), TIME_FORMATTER))
.build();
});

问题是,如果它碰巧抛出异常,我会在 Spring Boot 应用程序中收到 500 状态代码,尽管 BadRequestException 的状态代码应该是 400。知道如何最好地处理此类转换器异常吗?

最佳答案

您可以将 @ResponseStatus 添加到您的异常中:

@ResponseStatus(value = HttpStatus.BAD_REQUEST)
public class BadRequestException extends RuntimeException {
}

抛出此异常时将生成 400。

但是还有各种其他选项可以处理 REST Controller 中的异常。看看这里:

https://www.baeldung.com/exception-handling-for-rest-with-spring

关于java - 使用 ModelMapper 将 DTO 映射到实体(包括异常),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52419623/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com