当内部的值为空(someClass是嵌套的)时,如何配置ModelMapper不将someClass = null设置为空)

问题描述 投票:2回答:1

第一次在这里发布(希望您能理解我的问题和我的英语)。

我想知道是否有一种方法可以“告诉” ModelMapper,当内部的值为null(在嵌套类中)时不设置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
    }
}

我的例子。

我在模型中有这两个类:

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中有这两个类:

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
}

我通过以下方式(通过方法)使用ModelMapper映射这些类:

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

someDao.getOrderByNumber方法执行查询并使用 rowMapper将ResultSet中的值设置为Order类变量(和 在嵌套的一个中)。

类似:order = jdbcTemplate.queryForObject(query, new OrderMapper(), orderNumber);

***名字和姓氏在数据库中为空。

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

映射后OrderDto的输出:“ OrderDto(orderNumber = 123,orderSize = 10cm,orderDescription =某些订单,orderClient =空)”

提前感谢!

java spring-boot modelmapper
1个回答
1
投票

您可以通过在默认构造函数中进行初始化或通过声明属性来尝试使用默认值

示例:

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
}
© www.soinside.com 2019 - 2024. All rights reserved.