Questions tagged «cascade»

6
@ManyToOne JPA关联的CascadeType.ALL是什么意思
我认为我误解了@ManyToOne关系中级联的含义。 案子: public class User { @OneToMany(fetch = FetchType.EAGER) protected Set<Address> userAddresses; } public class Address { @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) protected User addressOwner; } 的含义是cascade = CascadeType.ALL什么?例如,如果我从数据库中删除某个地址,添加的事实会如何cascade = CascadeType.ALL影响我的数据(User我猜是)?

8
JPA orphanRemoval = true与ON DELETE CASCADE DML子句有何不同
我对JPA 2.0 orphanRemoval属性有些困惑。 我想我可以看到,当我使用JPA提供程序的数据库生成工具来创建基础数据库DDL时,需要具有ON DELETE CASCADE特定的关系。 但是,如果数据库存在并且已经具有ON DELETE CASCADEon关系,这是否不足以适当地级联删除?orphanRemoval另外还做什么? 干杯

3
如何添加“在删除级联”约束?
在PostgreSQL 8中,是否可以ON DELETE CASCADES在下表中添加两个外键而不删除后者? # \d scores Table "public.scores" Column | Type | Modifiers ---------+-----------------------+----------- id | character varying(32) | gid | integer | money | integer | not null quit | boolean | last_ip | inet | Foreign-key constraints: "scores_gid_fkey" FOREIGN KEY (gid) REFERENCES games(gid) "scores_id_fkey" FOREIGN KEY (id) …

2
SQL ON DELETE CASCADE,删除以哪种方式发生?
如果我在数据库中有两个关系,如下所示: CREATE TABLE Courses ( CourseID int NOT NULL PRIMARY KEY, Course VARCHAR(63) NOT NULL UNIQUE, Code CHAR(4) NOT NULL UNIQUE ); CREATE TABLE BookCourses ( EntryID int NOT NULL PRIMARY KEY, BookID int NOT NULL, Course CHAR(4) NOT NULL, CourseNum CHAR(3) NOT NULL, CourseSec CHAR(1) NOT NULL ); 我在两者之间建立了外键关系,如下所示: …


1
Cascade = {“删除”} VS orphanRemoval = true VS ondelete =“ CASCADE
我尝试收集一些有关以下方法的信息,这些方法是在删除父实体时自动删除子实体的。似乎最常见的方法是使用这三个注释之一:层叠= {“删除”} OR orphanRemoval = true或ondelete =“ CASCADE”。 我对第三个混淆不清:ondelete =“ CASCADE”,因为在教义的官方文档中对此的解释非常稀缺),如果有人可以确认我从我的研究中收集并理解的以下信息,我将非常希望网络和经验... 它能做什么 Cascade = {“ remove”} ==>如果拥有拥有者实体,则删除拥有相反实体的实体。即使您与其他拥有的附属实体有很多关系。 -应该在集合上使用(因此在OneToMany或ManyToMany关系中使用)-ORM中的 实现 orphanRemoval = true ==>当拥有方实体为AND时,将删除反方的实体,并且该实体不再与任何其他拥有方实体连接。(参考 doctrine official_doc -ORM中的实现 -可以与OneToOne,OnetoMany或ManyToMany一起使用 onDelete =“ CASCADE” ==>这会将On Delete Cascade添加到数据库中的外键列中 -这种策略有点棘手,但是可以非常强大和快速。(请 参阅doctrine official_doc ...,但尚未阅读更多说明) -ORM要做的工作更少(与前两种方法相比),因此应该具有更好的性能。 其他信息 -所有这三种方式都是在双向关系实体上实现的(右???) -使用cascade = {“ remove”}完全绕过onDelete = CASCADE上的任何外键。(参考doctrine_official_doc) 有关如何在代码中使用它的示例 orphanRemoval和cascade = {“ …

1
了解理论级联操作
我想检查一下我对Doctrine关联的级联运算的理解。出于这个问题的目的,我有两个模型:Customer和Insuree。 如果我在Customer和之间Insuree设置了多对多关系cascade{"all"},则可以理解: 向客户添加新的被保险人将保留该被保险人,并在联接表中创建关联。 从集合中删除被保险人将使保险人与客户分离,并使客户与被保险人分离。 删除客户将删除与该客户关联的所有保险。 这是上的关联的定义Customers。 /** * @ORM\ManyToMany(targetEntity="Insuree", inversedBy="customers", cascade={"all"}) * @ORM\JoinTable(name="customer_insuree", * joinColumns={@ORM\JoinColumn(name="customer_id", referencedColumnName="id")}, * inverseJoinColumns={@ORM\JoinColumn(name="insuree_id", referencedColumnName="id")} * ) */ protected $insurees; 如果我定义了InsureeandCustomer和set之间的逆多对多关系cascade{"all"},则可以理解: 向被保险人添加新客户将保留该客户并在联接表中创建关联。 从集合中删除客户将使客户与被保险人分离,并将客户与被保险人分离。 删除被保险人将删除与其关联的所有客户。 这是上的关联的定义Insurees。 /** * @ORM\ManyToMany(targetEntity="Customer", mappedBy="insurees", cascade={"all"}) */ protected $customers; 如果然后我定义持久化,合并和分离的关系-删除被保险人将不会删除所有关联的客户-只会删除被保险人与其客户之间的关联? /** * @ORM\ManyToMany(targetEntity="Customer", mappedBy="insurees", cascade={"persist", "merge", "detach"}) */ protected $customers;
72 php  doctrine  cascade 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.