如何配置 ModelMapper 在里面的值为 null 时不设置 someClass=null(someClass 是嵌套的)

How to configure ModelMapper to not set someClass=null when the values inside are null (someClass is a nested one)

第一次在这里发帖(希望你能理解我的问题和我的英文)

我想知道是否有办法 "tell" ModelMapper 在内部值为空时(在嵌套 class 中)不设置 someClass=null。

我的问题是,当我调用我的控制器时,我希望得到这样的响应:

{
    "order": {
        "orderNumber": "123",
        "orderSize": "10cm",
        "orderDescription": "Some order",
        "orderClient": {
            "firstName": null,
            "lastName": null
        }
    }
}

但是我得到了这个:

{
    "order": {
        "orderNumber": "123",
        "orderSize": "10cm",
        "orderDescription": "Some order",
        "orderClient": null
    }
}

我的例子。

我在模型中有这两个 classes:

class Order {

  private String number;
  private String size;
  private String description;
  private Client client;

  //getters and setters
}

class Client{

  private String firstName;
  private String lastName;

  //getters and setters
}

我在 dto 中有这两个 classes:

class OrderDTO {

    private String orderNumber;
    private String orderSize;
    private String orderDescription;
    private Client orderClient;

    //getters and setter
}

class ClientDTO {

  private String firstName;
  private String lastName;
  //getters and setters
}

我通过以下方式(在方法中)将这些 classes 映射到 ModelMapper:

Order order = someDao.getOrderByNumber(1234);
OrderDto orderDto = modelMapper.map(order, OrderDto.class);

The method someDao.getOrderByNumber execute a query and use a rowMapper to set the values from the ResultSet to the Order class variables (and in the nested one).

Like this: order = jdbcTemplate.queryForObject(query, new OrderMapper(), orderNumber);

***The firstName and lastName are null in the DB.

当 firstName 和 lastName 为 null 时,ModelMapper 将我的 ClientDto 设置为 null。

映射后OrderDto的输出:"OrderDto(orderNumber=123, orderSize=10cm, orderDescription=Some order, orderClient=null)"

提前致谢!

您可以通过在默认构造函数中初始化或通过声明 属性

来尝试使用默认值

示例:

class OrderDTO {

    private String orderNumber;
    private String orderSize;
    private String orderDescription;
    private Client orderClient = new Client();

    //getters and setter
}

 class OrderDTO {

    private String orderNumber;
    private String orderSize;
    private String orderDescription;
    private Client orderClient;

    public OrderDTO() {
         this.orderClient = new Client();
    }
    //getters and setter
}