Reputation: 25
first time posting here (and i hope you can understand my question and my english).
I want to know if there is a way to "tell" ModelMapper to not set someClass=null when the values inside are null (in nested class).
My problem is, when i call my controller i expect this response:
{
"order": {
"orderNumber": "123",
"orderSize": "10cm",
"orderDescription": "Some order",
"orderClient": {
"firstName": null,
"lastName": null
}
}
}
But i got this one:
{
"order": {
"orderNumber": "123",
"orderSize": "10cm",
"orderDescription": "Some order",
"orderClient": null
}
}
My example.
I have this two classes in a model:
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
}
And i have this two classes in 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
}
I map these classes with ModelMapper the following way (in a method):
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.
ModelMapper set my ClientDto to null when firstName and lastName are null.
The output of OrderDto after the mapping: "OrderDto(orderNumber=123, orderSize=10cm, orderDescription=Some order, orderClient=null)"
Thanks in advance!
Upvotes: 2
Views: 926
Reputation: 36
you can try with a default value by initializing in the default constructor or by declaring the property
example:
class OrderDTO {
private String orderNumber;
private String orderSize;
private String orderDescription;
private Client orderClient = new Client();
//getters and setter
}
or
class OrderDTO {
private String orderNumber;
private String orderSize;
private String orderDescription;
private Client orderClient;
public OrderDTO() {
this.orderClient = new Client();
}
//getters and setter
}
Upvotes: 1