getObject(); if (!$entity instanceof Piece) { return; } $this->syncPrimaryProduct($entity); } public function preUpdate(PreUpdateEventArgs $args): void { $entity = $args->getObject(); if (!$entity instanceof Piece) { return; } $this->syncPrimaryProduct($entity); $em = $args->getObjectManager(); $meta = $em->getClassMetadata(Piece::class); $em->getUnitOfWork()->recomputeSingleEntityChangeSet($meta, $entity); } private function syncPrimaryProduct(Piece $piece): void { $productIds = $piece->getProductIds(); if ([] === $productIds) { // If no explicit list is provided, keep the legacy relation as-is. return; } $primaryId = $productIds[0] ?? null; if (!$primaryId) { $piece->setProduct(null); return; } $currentProductId = $piece->getProduct()?->getId(); if ($currentProductId === $primaryId) { return; } $primaryProduct = $this->productRepository->find($primaryId); $piece->setProduct($primaryProduct); } }