Установите для вложенных объектов значение NULL, если идентификаторы имеют значение NULL

Я хотел бы настроить mapstruct, чтобы установить объект на нуль, если его идентификатор равен нулю. И / или не инициализировать объект в первую очередь, если все его поля являются нулевыми.

Прямо сейчас я делаю это:

public void setNestedObjectsToNullIfIdsNull(Servicio entity) {
        if(entity == null) return;

        if(entity.getViaje() != null && entity.getViaje().getId() == null) {
            entity.setViaje(null);
        }
        if(entity.getPaciente() != null && entity.getPaciente().getId() == null) {
            entity.setPaciente(null);
        }
        //... this is bad
}

Я делаю это потому, что не могу вставить объект в базу данных, если у него инициализированы реляционные объекты и их идентификаторы равны нулю.

1 ответ

Решение

К сожалению, это известное ограничение в MapStruct. Единственный способ добиться этого - использовать @AfterMapping и сбросить объекты в null,

В проблемах MapStruct уже есть этот запрос, который ищет нечто подобное.

Другие вопросы по тегам