ModelMapper配置应该是什么样的呢?
编译组:‘org.model modelmapper’,名称:'modelmapper',版本:'2.3.8‘
目前我有:
modelMapper = new ModelMapper();
modelMapper.getConfiguration()
.setMatchingStrategy(MatchingStrategies.STANDARD)
.setFieldMatchingEnabled(true)
.setFieldAccessLevel(Configuration.AccessLevel.PRIVATE);
我的实体
@OneToMany(mappedBy = "employee", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Phones> phones = new ArrayList<>();
我的第二个实体:
@ManyToOne
@JoinColumn(name = "employee_id")
private Employee employee;
我想要的DTO:
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor(force = true)
public class EmployeeDTO {
@Singular
private final List<PhoneDTO> phones;
}
我用这样的方式来描绘这个:
EmployeeDTO.EmployeeDTOBuilder employeeDTOBuilder
= ObjectMapperUtils.map(employee, EmployeeDTO.employeeDTOBuilder.class);
我得到了:
org.modelmapper.internal.converter.MergingCollectionConverter@969b4391无法将org.hibernate.collection.internal.PersistentBag转换为java.util.ArrayList.
发布于 2021-12-21 09:52:31
在堆栈跟踪中看得更深一点:最后一个映射问题通常更可操作。
也许PhoneDTO
不是可映射的?如果是这样,您需要创建一个转换器并将其告知模型映射器,如下所示:
public class PhoneConverter extends AbstractConverter<PhoneEntity, PhoneDto>
{
private final StrictModelMapper strictModelMapper;
@Override
public PhoneDto convert(@NonNull final PhoneEntity source)
{
PhoneDto phoneDto = new PhoneDto();
strictModelMapper.map(source, phoneDto);
return phoneDto;
}
}
并将其添加到modelMapper
中。
https://stackoverflow.com/questions/63718182
复制相似问题