Dozer обнуляет поля, существующие только в dest вместо игнорирования - PullRequest
0 голосов
/ 13 мая 2018

У меня есть Pojo:

class Pojo{
   String name;
   String surname;
}

и сущность jpa / hibernate:

class Entity{
     Long id;
     String code;
     List<EntityPojo> ep;
}

наконец, сущность pojo

class EntityPojo{
    Long id;
    String name;
    String surname;
}

В моем коде яdo:

//I receive a pojo from the rest call and I want to update
Entity entity = repo.findByCode("aCode");

//at this point my entity pojo IDs are correctly filled!

dozerMapper.map(pojo, entity);

//after the map the IDs are null!!
repo.save(entity); //BAM!

Как вы можете видеть, отображение просто удаляет идентификаторы, и это приводит меня к исключению ограничения в спящем режиме ... почему это так?

1 Ответ

0 голосов
/ 13 мая 2018

Вы не предоставили код, который изолирует и воспроизводит проблему.Из того, что вы предоставили, хотя бы вещи для проверки:

1) Какой идентификатор есть в pojo экземпляре?Если он нулевой - вот ваш результат.Может быть полезно: Исключить сопоставление пустых значений

2) Проверить уровни доступа.Я не уверен, как в настоящее время работает Dozer, если поля не являются общедоступными и не имеют методов открытого доступа.

3) Вы проверяли, что поля в сущности являются нулевыми, а не в базе данных?Если да - почему у этого вопроса есть тег spring-data-jpa и код, связанный с уровнем устойчивости?Если вы этого не сделаете - почему вы уверены, что что-то не так с Dozer, а не с отображением вашей базы данных?

В общем - вы, кажется, вообще не работаете над этим вопросом самостоятельно, потому что если вы это делаете- вы бы хотя бы сделали пример с очищенным слоем постоянства базы данных, убедившись, что это не то место, где вы теряете свои поля.Очень сложно ответить на вопрос с использованием разных технологий, и проблема может быть где угодно.

...