gpt4 book ai didi

java - ModelMapper:匹配多个源属性层次结构

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:15:57 25 4
gpt4 key购买 nike

我无法解决 modelMapper 错误。您知道问题出在哪里吗?

注意:鉴于 java.sql.Time 没有非参数构造函数,我没有找到比编写转换器更好的方法

org.modelmapper.ConfigurationException: ModelMapper configuration errors:

1) The destination property
biz.models.CarWash.setSecondShift()/java.util.Date.setTime() matches
multiple source property hierarchies:

biz.dto.CarWashDTO.getFirstShift()/java.time.LocalTime.getSecond()
biz.dto.CarWashDTO.getSecondShift()/java.time.LocalTime.getSecond()

错误是由这段代码造成的

@SpringBootTest
@RunWith(SpringRunner.class)
public class CarWashDTO2CarWash {

@Autowired
protected ModelMapper modelMapper;

@Test
public void testCarWashDTO2CarWash_allFiledShouldBeConverted(){
CarWashDTO dto = CarWashDTO.builder()
.name("SomeName")
.address("SomeAddress")
.boxCount(2)
.firstShift(LocalTime.of(9, 0))
.secondShift(LocalTime.of(20, 0))
.phoneNumber("5700876")
.build();

modelMapper.addConverter((Converter<CarWashDTO, CarWash>) mappingContext -> {
CarWashDTO source = mappingContext.getSource();
CarWash destination = mappingContext.getDestination();
destination.setId(source.getId());
destination.setFirstShift(source.getFirstShift() == null ? null : Time.valueOf(source.getFirstShift()));
destination.setSecondShift(source.getSecondShift() == null ? null : Time.valueOf(source.getSecondShift()));
destination.setEnable(true);
destination.setAddress(source.getAddress());
destination.setBoxCount(source.getBoxCount());
destination.setName(source.getName());
destination.setDateOfCreation(source.getDateOfCreation());
return destination;
});

final CarWash entity = modelMapper.map(dto, CarWash.class);
assertNotNull(entity);
assertEquals(2, entity.getBoxCount().intValue());
assertEquals("SomeAddress", entity.getAddress());
assertEquals("SomeName", entity.getName());
}

modelmapper bean是通过接下来的配置构建的

@Bean
public ModelMapper modelMapper(){
return new ModelMapper();
}

Dto:

public class CarWashDTO {
private Long id;
private String name;
private String address;
private String phoneNumber;
private Integer boxCount;
private LocalTime firstShift;
private LocalTime secondShift;
private LocalDateTime dateOfCreation;
}

实体(firstShift 和 secondShift 有 java.sql.Time 类型):

public class CarWash {
private Long id;
private String name;
private String address;
private String phoneNumber;
private Integer boxCount;
private Time firstShift;
private Time secondShift;
private LocalDateTime dateOfCreation;
private Boolean enable;
private Owner owner;
}

最佳答案

试试 modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT)

关于java - ModelMapper:匹配多个源属性层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49831753/

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