Как сопоставить список с его размером

В моих сущностях у меня есть объект Полка с коллекцией книг

public class Shelf{
  ...
  private List<Book> books;
}

В моем ShelfDTO мне нужно только количество книг

public class ShelfDTO{
  ...
  private int booksNumber;
}

Я пробовал с:

modelMapper.addMappings(new PropertyMap<Shelf, ShelfDTO>() {
        protected void configure() {
            map().setBooksNumber(source.getBooks().size());
        }
    });

Но у меня есть исключение, когда я пытаюсь запустить приложение:

Caused by: java.lang.NullPointerException: null
    at org.modelmapper.internal.ExplicitMappingBuilder$ExplicitMappingInterceptor.access$000(ExplicitMappingBuilder.java:304) ~[modelmapper-2.3.0.jar:na]
    at org.modelmapper.internal.ExplicitMappingBuilder.createAccessorProxies(ExplicitMappingBuilder.java:287) ~[modelmapper-2.3.0.jar:na]
    at org.modelmapper.internal.ExplicitMappingBuilder.createProxies(ExplicitMappingBuilder.java:277) ~[modelmapper-2.3.0.jar:na]

Есть ли способ сделать это с помощью сопоставления свойств или мне нужно использовать конвертер?


person Lempkin    schedule 18.03.2019    source источник
comment
List<Book> books = new ArrayList<>(); может предотвратить NullPointerException   -  person Karol Dowbecki    schedule 18.03.2019
comment
Я пытался, но это не так. не уверен, откуда берется nullPointer   -  person Lempkin    schedule 18.03.2019
comment
Если вы не собираетесь сразу же инициализировать свой Arraylist при его создании, он будет нулевым, пока вы его не определите. Где твой books = new ArrayList<>();?   -  person FailingCoder    schedule 18.03.2019
comment
Вы случайно не сопоставили объект TimeZone где-нибудь, как описано в этом вопросе?   -  person Karol Dowbecki    schedule 18.03.2019
comment
@FailingCoder Список будет содержать книги, когда я достану полку из БД, если таковая имеется. Если нет, list будет нулевым, но даже с books = new ArrayList‹›(); в конструкторе полки я все еще получаю то же исключение   -  person Lempkin    schedule 18.03.2019
comment
@KarolDowbecki Нет, ничего подобного   -  person Lempkin    schedule 18.03.2019
comment
Забыл упомянуть (я редактировал), но это исключение возникает, когда я пытаюсь запустить приложение, а не когда происходит сопоставление (поскольку я, очевидно, не могу его достичь)   -  person Lempkin    schedule 18.03.2019