- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有 fos restbundle 的 Symfony rest api 构建,我正在反序列化一个 json PUT 请求,以便更新具有多对多关系的学说实体。
但是,配置了orphanremoval=true
的多对多子对象。当它们不存在于 json 数据中时,不会从数据库中删除。
PUT 请求负载:
{
"id": 1,
"name":"Some name",
"export_destinations": [
{
"id": 1,
"type": "USER_STORAGE",
"user": {"id": 5}
}
{
"id": 2,
"type": "SYSTEM_STORAGE"
}
]
}
/**
* @Rest\Put("{id}")
* @ParamConverter(
* "exportJob",
* converter="fos_rest.request_body",
* options={"deserializationContext"={"groups"={"put"}}}
* )
* @Rest\View(serializerGroups={"details"})
* @param ExportJob $exportJob
* @return ExportJob
*/
public function putAction(ExportJob $exportJob)
{
$this->getManager()->persist($exportJob);
$this->getManager()->flush();
return $exportJob;
}
/**
* @ORM\Entity()
*/
class ExportJob
{
/**
* @var ArrayCollection|ExportDestination[]
*
* @ORM\OneToMany(targetEntity="ExportDestination", mappedBy="exportJob", cascade={"persist", "remove", "merge"}, orphanRemoval=true)
*/
protected $exportDestinations;
/**
* @param ExportDestination $exportDestination
* @return $this
*/
public function addExportDestination(ExportDestination $exportDestination)
{
$exportDestination->setExportJob($this);
$this->exportDestinations->add($exportDestination);
return $this;
}
/**
* @param ExportDestination $exportDestination
* @return $this
*/
public function removeExportDestination(ExportDestination $exportDestination)
{
$this->exportDestinations->removeElement($exportDestination);
$exportDestination->setExportJob(null);
return $this;
}
}
MyProject\ExportBundle\Entity\ExportJob:
exclusion_policy: ALL
properties:
id:
groups: ['list', 'details', 'put']
expose: true
name:
groups: ['list', 'details', 'put', 'patch', 'post']
expose: true
exportDestinations:
groups: ['details', 'put', 'patch', 'post']
expose: true
type: 'ArrayCollection<MyProject\ExportBundle\Entity\ExportDestination>'
jms_serializer.object_constructor:
alias: jms_serializer.doctrine_object_constructor
public: false
orphanremoval=true
.
removeExportDestination()
方法在反序列化期间永远不会被调用,什么应该在相反的一侧将关系设置为 null。如果没有发生,它不会删除该实体,因为它尚未成为孤儿。
merge()
而不是
persist()
但没有任何区别
最佳答案
您对“在反序列化期间永远不会调用 removeExportDestination() 方法”是正确的。
您可以定义 访问器(accessor) 属性(property)做你想做的事:
exportDestinations:
groups: ['details', 'put', 'patch', 'post']
expose: true
type: 'ArrayCollection<AppBundle\Entity\ExportDestination>'
accessor:
getter: "getExportDestinations"
setter: "setExportDestinations"
public function getExportDestinations()
{
return $this->exportDestinations;
}
public function setExportDestinations($exportDestinations)
{
// first detach existing related entities.
foreach ($this->exportDestinations as $exportDestination) {
$exportDestination->setExportJob(null);
}
$this->exportDestinations = $exportDestinations;
foreach ($exportDestinations as $exportDestination) {
$exportDestination->setExportJob($this);
}
}
orphanremoval=true
在关系上,作为
orphanRemoval=true, even if you will remove given ExportDestination from one ExportJob, and then attach to another ExportJob, this ExportDestination will be deleted during persist, because the reference has been deleted.
关于doctrine-orm - JMS 反序列化对多关系不会通过 orphanremoval 删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49573589/
我有 2 个实体: 轨迹 引用资料 在每个Locus上我们可以定义很多不同的References,一个Reference可以被很多Locus使用。然后我有一个 ManyToMany 关系。 但是,在我
以下两个类(CD 和 DVD)彼此不相关。每个类都有不同的表。但都有子类,如地址。 保存 DVD/CD 的值时,条目插入到相应的表中。因此,当我尝试在 Address_Table 中添加值时,它使用
我在使用 hibernate 持久化克隆对象时遇到了问题。当它的嵌套子项被删除时,记录并没有从数据库中删除(我已经设置了 orphanRemoval = true)。 在下面的代码中,使用 json
我对双向 OneToOne 关系和孤儿删除有点困惑。这些是我的实体: @Entity @Table(name = "city") public class City { @Id @Ge
根据这篇文章Difference between @OneToMany and @ElementCollection?我应该更喜欢 @ElementCollection 用于可嵌入类型,而 @OneT
我有实体 Event 与另一个实体有特定关系: @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, mappedBy = "even
我有一个 RECIPE 表,它与 INGREDIENT 表具有 OneToMany 关系,因为单个配方可以包含多种成分。问题是,如果用户删除一个成分(前端将所有字段(ingredient_id 和 i
我的目的是仅当实体连接音轨没有其他记录时才删除实体艺术家中的记录。 我尝试以这种方式使用 orphanRemoval: Soundtrack.php /** * @Assert\NotBlank(m
我到处搜索,但没有找到好的答案。 我正在使用 Hibernate + Spring + Mysql 开发一个 Maven 应用程序。 这是我的 application-context.xml :
我有非常具体的情况,并尝试了不同的场景来实现从Java集合中删除时从数据库中删除。 我的 House 与 Room 具有 OneToMany 关系,而 Room 与 Bed 具有 OneToMany
我一直在阅读有关 orphanRemoval= true 的帖子在 JPA 中。根据文档: orphanRemoval is a flag - Whether to apply the remove
我在 Hibernate 引用书的第 21 章中有一个基本的一对多父/子关系。 级联仅从子级到父级(持久级联只是因为我不想删除子级时删除父级)。 当我将一个 child 添加到 parent 并保存
以下示例已简化。 我有以下数据库结构: X -xid VARCHAR Y -yid VARCHAR -xid VARCHAR -zid VARCHAR Z -zid VARCHAR 我有以下
假设我们有两个实体(Profile 和Address)。一个配置文件可以有多个地址。在这种情况下,我们有: Profile: ... fields: ... o
我在使用 JPA/Hibernate (3.5.3) 设置时遇到问题,其中我有一个实体,一个“Account”类,它有一个子实体列表,“Contact”实例。我正在尝试能够将 Contact 的实例添
我有一个带有 fos restbundle 的 Symfony rest api 构建,我正在反序列化一个 json PUT 请求,以便更新具有多对多关系的学说实体。 但是,配置了orphanremo
因此,在我的一个实体中将 orphanRemoval = true 添加到 @OneToMany 关系后,在尝试保存新实体或删除现有实体时,出现以下异常:引用带有 orphanRemoval = tr
我正在使用 JPA 2.1、EclipseLink 2.5.0、SQLite3 数据库和 Swing 制作一个应用程序。 我有两个实体,EntityClient和EntityPhone ,其中第一个有
上面两个选项有什么区别?什么时候选择每个选项更合适? 最佳答案 它们之间的基本区别是: When using the orphanRemoval=true option Doctrine makes
我正在使用 hibernate 4.1.0,jpa 2.1。当我尝试建立一对多关系时,出现上述错误。我已经尝试过其他关于堆栈溢出的解决方案,但它们对我不起作用 这是我的 Bean 类: @Entity
我是一名优秀的程序员,十分优秀!