如何将DTO映射到现有的JPA实体?

dys*_*xit 7 java spring hibernate modelmapper

我正在尝试将Java DTO对象映射到现有的JPA实体对象,而不必执行以下操作:

public MyEntity mapToMyEntity(SomeDTO dto, MyEntity entity) {
    entity.setField1(dto.getField1());
    entity.setField2(dto.getField2());
    ...
    entity.setField20(dto.getField20());

    return entity;
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,我一直在使用ModelMapper:MyEntity entity = modelMapper.map(dto, SomeDTO.class);但我正在尝试做的是映射到现有的实体对象,而不是从DTO 创建新的实体对象.我查看了ModelMapper手册,但没有找到如何在不创建新对象的情况下进行映射.我是否为我可能拥有的每个实体对象手动添加每个成员变量?

Sah*_*lık 4

您可以使用推土机映射器或 gson。

DozerMapper 前:

Mapper mapper = DozerBeanMapperBuilder.createDefault();
DestinationObject destObject = mapper.map(sourceObject,DestinationClassName.class);
Run Code Online (Sandbox Code Playgroud)

您可以查看github 页面以获取更多信息

  • 虽然这是一个很好的建议,但我认为与 OP 实际所做的没有任何不同。OP 询问如何从 DTO 映射到 **现有实体实例**,而不是映射到新实例。我想类似于“mapper.map(dto,entityObj)”。 (2认同)