首页 > 解决方案 > ModelMapper::map() 的非预期行为

问题描述

我使用 ModdelMapper::map() 来更新实体。

我有实体和 dto:

@Entity
@Builder(toBuilder = true)
@Data
public class CustomerOrder {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @OneToMany(
            cascade = CascadeType.ALL)
    private List<LineItem> lineItems;

    private Long customerId;

@Data
@Builder(toBuilder = true)
public class OrderRequest {

    @NotNull
    private Long customerId;

    @NotEmpty(message = "Products is mandatory")
    private List<LineItemDTO> lineItems;

我的控制器:

   @PutMapping("/{id}")
    public ResponseEntity<OrderResponse> updateOrder(@PathVariable Long id,
                                                     @Valid @RequestBody OrderRequest orderDto){

        final Optional<CustomerOrder> orderById = repository.findById(id);

        return orderById
                .map(order -> {
                    mapper.updateEntity(orderDto, order);
                    repository.save(order);
                    return ResponseEntity.ok(mapper.toDto(order));
                })
                .orElse(ResponseEntity.notFound().build());
    }

我看到 Id 字段已更新为 customerId 的值。为什么会这样?

标签: javaspringrestmodelmapper

解决方案


推荐阅读