Shi*_*abu 8 java hibernate modelmapper
ModelMapper 配置应该是什么样的?
编译组:'org.modelmapper',名称:'modelmapper',版本:'2.3.8'
目前我有:
modelMapper = new ModelMapper();
modelMapper.getConfiguration()
.setMatchingStrategy(MatchingStrategies.STANDARD)
.setFieldMatchingEnabled(true)
.setFieldAccessLevel(Configuration.AccessLevel.PRIVATE);
Run Code Online (Sandbox Code Playgroud)
我的实体有
@OneToMany(mappedBy = "employee", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Phones> phones = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)
我的第二个实体:
@ManyToOne
@JoinColumn(name = "employee_id")
private Employee employee;
Run Code Online (Sandbox Code Playgroud)
我想要的 DTO:
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor(force = true)
public class EmployeeDTO {
@Singular
private final List<PhoneDTO> phones;
}
Run Code Online (Sandbox Code Playgroud)
我用这种方式映射:
EmployeeDTO.EmployeeDTOBuilder employeeDTOBuilder
= ObjectMapperUtils.map(employee, EmployeeDTO.employeeDTOBuilder.class);
Run Code Online (Sandbox Code Playgroud)
我越来越:
更深入地查看堆栈跟踪:最后一个映射问题通常是更可操作的问题。
也许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;
}
}
Run Code Online (Sandbox Code Playgroud)
并将其添加到modelMapper.
| 归档时间: |
|
| 查看次数: |
8415 次 |
| 最近记录: |