Doctrine tries to insert a null object Symfony 5.4

when i submit my form, I have two values ​​to choose from:
WorkPlanningDay and workPlanningHour.

if workplanninghour is specified, we insert a row in the workplanninghour table and vice versa

When I submit a workPlanningHour, I want to prevent doctrine from inserting a workPlanningDay object with null data. I tried to use a $form->remove but without success.

here is my request datas :

{"statuses":[6],"work_planning":1,"work_planning_hour":{"count_jrtt":1,"end_at":"31-12","jrtt":true,"lower_hour_jrtt":35,"nbr_jrtt":24,"start_at":"01-01","upper_hour_jrtt":39},"work_planning_period":0,"working_time_aspect":{"days":["MON","TUE","WED","THU","FRI"],"time":0,"weekly_hours":35}}

here is my form with my EventListener :

class WorkingTimeParametersRESTType extends AbstractType
{
    /**
     * {@inheritdoc}
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('work_planning', FieldChoiceType::class, array(
                'property_path'     => 'workPlanning',
                'required'          => true,
                'choices'           => WorkingTimeParameters::getAllowedWorkPlannings(),
            ))
            ->add('work_planning_period', FieldChoiceType::class, array(
                'property_path'     => 'workPlanningPeriod',
                'required'          => false,
                'choices'           => WorkingTimeParameters::getAllowedWorkPlanningPeriods(),
            ))
            ->add('working_time_aspect', WorkingTimeAspectType::class, array(
                'property_path' => 'workingTimeAspect',
                'required'      => true,
                'constraints'   => array(new Valid())
            ))
            ->add('work_planning_hour', WorkPlanningHourType::class, array(
                'property_path' => 'workPlanningHour',
                'required'      => true,
                'constraints'   => array(new Valid())
            ))
            ->add('work_planning_day', WorkPlanningDayType::class, array(
                'property_path' => 'workPlanningDay',
                'required'      => true,
                'constraints'   => array(new Valid())
            ))
            ->add('statuses', FieldCollectionType::class, array(
                'entry_type'    => CategoryIntegerType::class,
                'entry_options' => array(
                    'category_type' => Category::TYPE_STATUS,
                ),
                'allow_add'         => true,
                'allow_delete'      => true,
                'required'          => true,
                'error_bubbling'    => false,
            ))
            ->addEventListener(FormEvents::PRE_SET_DATA, array($this, 'onPreSetData'))
            ->addEventListener(FormEvents::SUBMIT, function (FormEvent $event) {
                /** @var WorkingTimeParameters $contract */
                $parameters = $event->getData();
                $form = $event->getForm();
//                dd($form->has('work_planning_day'));
                // Remove useless work planning
                
                if ($parameters->getWorkPlanning() == Contract::WORK_PLANNING_HOUR) {
                    $parameters->setWorkPlanningDay(null);
                    $form->remove('work_planning_day');
                   
                }
                else if ($parameters->getWorkPlanning() == Contract::WORK_PLANNING_DAY) {
                    $parameters->setWorkPlanningHour(null);
                    $form->remove('work_planning_hour');
                }
                else {
                    dd('rerer');
                    $form->remove('work_planning_day');
                    $form->remove('work_planning_hour');
                    $parameters->setWorkPlanningDay(null);
                    $parameters->setWorkPlanningHour(null);
                    $parameters->setWorkPlanningPeriod(null);
                }
            })

        ;
    }

    /**
     * @param FormEvent $event
     */
    public function onPreSetData(FormEvent $event)
    {
        $rttParameters = $event->getData();
        $form = $event->getForm();

        // The company can be set only on creation
        if (!$rttParameters || !$rttParameters->getId()) {
            $form->add('company', CompanyIntegerType::class, array(
                'required'  => true,
            ));
        }
    }

and here are the requests that doctrine is trying to launch :

INSERT INTO w2d_tm_work_planning_hour (startAt, endAt, jrtt, countJrtt, lowerHourJrtt, upperHourJrtt, nbrJrtt) VALUES ('1970-01-01 00:00:00', '1970-12-31 00:00:00', 1, 1, 35, 39, 24);


UPDATE w2d_tm_work_planning_day SET startAt = NULL, endAt = NULL, nbrDays = NULL, nbrJrtt = NULL WHERE id = 1;

how to do so that doctrine does not launch the second request with the null values ?