Mercur1y / con_calculator

0 stars 0 forks source link

Циклические зависимости #4

Open Prifiz opened 2 years ago

Prifiz commented 2 years ago

https://github.com/Mercur1y/con_calculator/blob/64ab605eef19356c1677d4f83c6de524f17db59e/src/main/java/com/simbirsoft/con_calc/dto/RoleDto.java#L18

В UserDto есть коллекция RoleDto, а в RoleDto - коллекция UserDto. Эту информацию всегда необходимо передавать в этих DTO?

Mercur1y commented 2 years ago

Правильно, не надо :) Я убрал из dto роли сет юзеров вообще. Но user нужен для dto покупателей и сет покупателей нужен для юзера, поэтому я сделал такой финт ушами: В @PostConstruct мы задал правила, в которых указано, какие поля маппер трогать не должен; https://github.com/Mercur1y/con_calculator/blob/53786ff497ef77adb7dc5c3f9d116b5fbdf54ac8/src/main/java/com/simbirsoft/con_calc/mapper/UserMapper.java#L33-L39 Сделал расширенный функционал конвертеров; https://github.com/Mercur1y/con_calculator/blob/53786ff497ef77adb7dc5c3f9d116b5fbdf54ac8/src/main/java/com/simbirsoft/con_calc/mapper/UserMapper.java#L50-L66 И просто вставил в каждый постконвертер дополнительный метод, в котором логика для пропущенных полей. При мапинге в DTO сетим ID сущности. При мапинге в DTO достаём сущность из репозитория по ID. https://github.com/Mercur1y/con_calculator/blob/53786ff497ef77adb7dc5c3f9d116b5fbdf54ac8/src/main/java/com/simbirsoft/con_calc/mapper/UserMapper.java#L68-L84