当前位置: 首页 > 知识库问答 >
问题:

教义/symfony2:尝试持久化多个元素时的异常

司马宏邈
2023-03-14

我试图上传多次照片到一个产品,但它不工作,这个例外是:

 /**
 * @ORM\OneToMany(targetEntity="Photos", mappedBy="product")
 */
private $photos;
/**
 * @ORM\ManyToOne(targetEntity="Product", inversedBy="photos")
 * @ORM\JoinColumn(nullable=true)
 */
private $product;
......

$files = $form->get('photos')->getData(); // I use Transformer to transform data to Photos Entity
foreach($files as $list){
   foreach($list as $item){
        $product->addPhoto($item);
   }
}

$em->persist($product);
$eù->flush();

堆栈跟踪(纯文本):

[1]条理\orm\ormException:在关联上找到类型为条理\common\collections\arrayCollection..\entity\product#photos的实体,但在C:..\vendor\dection\orm\lib\dection\orm\unitofwork.php第791行中需要portfolio\backend\backendbundle\entity\photos

at Doctrine\ORM\UnitOfWork->computeAssociationChanges(array('fieldName' => 'photos', 'mappedBy' => 'product', 'targetEntity' => '..\Entity\Photos', 'cascade' => array(), 'orphanRemoval' => false, 'fetch' => '2', 'type' => '4', 'inversedBy' => null, 'isOwningSide' => false, 'sourceEntity' => '..\Entity\Product', 'isCascadeRemove' => false, 'isCascadePersist' => false, 'isCascadeRefresh' => false, 'isCascadeMerge' => false, 'isCascadeDetach' => false), object(PersistentCollection))
    in C:\..\vendor\doctrine\orm\lib\Doctrine\ORM\UnitOfWork.php line 687

at Doctrine\ORM\UnitOfWork->computeChangeSet(object(ClassMetadata), object(Product))
    in C:\..\vendor\doctrine\orm\lib\Doctrine\ORM\UnitOfWork.php line 404

at Doctrine\ORM\UnitOfWork->computeScheduleInsertsChangeSets()
    in C:\..\vendor\doctrine\orm\lib\Doctrine\ORM\UnitOfWork.php line 711

at Doctrine\ORM\UnitOfWork->computeChangeSets()
    in C:\..\vendor\doctrine\orm\lib\Doctrine\ORM\UnitOfWork.php line 297

at Doctrine\ORM\UnitOfWork->commit(null)
    in C:\..\vendor\doctrine\orm\lib\Doctrine\ORM\EntityManager.php line 340

at Doctrine\ORM\EntityManager->flush()
    in C:\..\Controller\ProductController.php line 516

at ..\Controller\PostsController->createAction(object(Request))
    in  line 

at call_user_func_array(array(object(ProductController), 'createAction'), array(object(Request)))
    in C:\..\app\bootstrap.php.cache line 3094

at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), '1')
    in C:\..\app\bootstrap.php.cache line 3056

at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), '1', true)
    in C:\..\app\bootstrap.php.cache line 3207

at Symfony\Component\HttpKernel\DependencyInjection\ContainerAwareHttpKernel->handle(object(Request), '1', true)
    in C:\..\app\bootstrap.php.cache line 2429

at Symfony\Component\HttpKernel\Kernel->handle(object(Request))
    in C:\..\web\app_dev.php line 28

对象(原则\common\collections\arraycollection)[509]私有“元素”=>数组(size=2)“文件”=>对象(原则\common\collections\arraycollection)[603]私有“元素”=>数组(size=1)...0=>对象(..\entity\medias)[740]私有“ID”=>null私有“文件”=>对象(symfony\component\httpfoundation\file\uploadedfile)[13]...私有“产品”=>null

你对这个例外有什么想法吗?

共有1个答案

夏飞掣
2023-03-14

首先,您应该为@JoinColumn添加所有必需的属性:

/**
 * @ORM\ManyToOne(targetEntity="Product", inversedBy="photos")
 * @ORM\JoinColumn(name="product_id", referencedColumnName="id", nullable=true)
 */
private $product;

然后再次检查您的脚本。

 类似资料:
  • 每当我试图将子对象持久化到JPA中现有的父对象时,就会出现以下错误: 原因:javax。验证。ConstraintViolationException:在组[javax.Validation.groups.Default]的持续时间内,类[store.entidades.Sucursal]的验证失败,约束冲突列表:[ConstraintViolationImpl]{interpolatedMess

  • 谢谢 ----更新----

  • 我目前正在开发一个企业应用程序,我在设置实体管理器工厂时遇到了问题。我一直收到这条信息。 我已经在上面好几天了!请帮助!!!这是我的persitence.xml

  • 我有一个问题,分离实体传递到持久性。我以为我知道什么是超然的实体,但显然这对我来说太多了...因此,无论如何,我试图创建一个Person对象,该对象具有一个Interviewer对象,而Interviewer对象具有一个Office对象,每次尝试持久化Person时,我都会得到异常(在本例中,Office是分离的实体)。相关代码如下所示: 是帮助器类的静态方法: 您可能会注意到创建面试官的help

  • 我一直在尝试使用JPA Hibernate和mysql整理与我的DB的连接,但出于某种原因,无论我尝试什么,在启动tomcat服务器时,我都会遇到相同的异常: 这是我的JPA配置类: } 在这一点上,我想不出还有什么可以尝试的。。任何帮助都是非常感激的 编辑:这是整个堆栈跟踪

  • 问题内容: 我正在使用org.simpleframework.xml来为Android应用程序处理一些xml任务,并且遇到了以下错误,我无法弄清。 这是我要解组的XML示例: 这是我创建和注释的 POJO : 任何人都可以在正确的方向上指导我如何解决此问题,或者此错误消息的确切含义是什么?是否因为XML元素被命名为Album并且有一个属性也被命名为Album? 问题答案: 尝试通过以下方式注释您的