标签: cascade

对于@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;

}
Run Code Online (Sandbox Code Playgroud)

这是什么意思cascade = CascadeType.ALL?例如,如果我从数据库中删除某个地址,我添加的事实如何cascade = CascadeType.ALL影响我的数据(User我猜)?

java jpa cascade one-to-many many-to-one

193
推荐指数
6
解决办法
29万
查看次数

JPA 2.0 orphanRemoval = true删除Cascade时的VS.

我对JPA 2.0 orphanRemoval属性有点困惑.

当我使用JPA提供程序的数据库生成工具创建底层数据库DDL以获得ON DELETE CASCADE特定关系时,我想我可以看到它是必需的.

但是,如果数据库存在并且它已经存在ON DELETE CASCADE关系,那么这还不足以级联删除吗?什么是orphanRemoval除了做?

干杯

hibernate jpa cascade cascading-deletes jpa-2.0

172
推荐指数
7
解决办法
13万
查看次数

如何添加"删除级联"约束?

在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) REFERENCES users(id)
Run Code Online (Sandbox Code Playgroud)

两个引用的表都在下面 - 这里:

# \d games
                                     Table "public.games"
  Column  |            Type             |                        Modifiers
----------+-----------------------------+----------------------------------------------------------
 gid      | integer                     | not null default nextval('games_gid_seq'::regclass)
 rounds   | integer                     | …
Run Code Online (Sandbox Code Playgroud)

postgresql cascade constraints cascading-deletes postgresql-8.4

153
推荐指数
3
解决办法
11万
查看次数

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
);
Run Code Online (Sandbox Code Playgroud)

我建立了两者之间的外键关系,如下所示:

ALTER TABLE BookCourses
ADD FOREIGN KEY (Course)
REFERENCES Courses(Code)
ON DELETE CASCADE;
Run Code Online (Sandbox Code Playgroud)

然后,你可以看到,Course在属性BookCourses关系引用Code属性的Courses关系.

我的问题是当两个关系中的任何一个发生删除时,删除级联的方式是什么?如果我删除Courses关系中的元组,它会删除关系中的所有引用元组BookCourses,还是反过来?

感谢您的时间.

sql database database-design cascade relation

152
推荐指数
2
解决办法
18万
查看次数

何时/为何在SQL Server中使用级联?

在SQL Server中设置外键时,在什么情况下应该在删除或更新时级联它,背后的原因是什么?

这可能也适用于其他数据库.

我最关注每个场景的具体例子,最好是那些成功使用它们的人.

sql-server rdbms database-design cascade foreign-keys

146
推荐指数
9
解决办法
9万
查看次数

cascade = {"remove"} VS orphanRemoval = true VS ondelete ="CASCADE

我尝试收集有关以下方式的一些信息,以便在删除父实体时自动删除子实体.似乎最常见的方法是使用这三个注释:cascade = {"remove"} OR orphanRemoval = true OR ondelete ="CASCADE".

对第三个问题感到有点困惑:ondelete ="CASCADE",正如关于这个的官方文档中的解释非常稀缺)如果有人能够证实我从我的研究中收集和了解的以下信息,我会很高兴.网和经验......

它能做什么

cascade = {"remove"}
==>当拥有方实体为时,删除反面的实体.即使你与其他拥有的实体有许多不同之处.
- 应该用于集合(所以在OneToMany或ManyToMany关系中)
- 在ORM中实现

orphanRemoval = true
==>当拥有方实体为AND时,将删除反方的实体,并且它不再连接到任何其他拥有方实体.(参考 doctrine official_doc - ORM中的实现
- 可以与OneToOne,OnetoMany或ManyToMany一起使用

onDelete ="CASCADE"
==>这会将删除级联添加到数据库中的外键列
- 这个策略有点难以实现,但可以非常强大和快速.(参见 doctrine official_doc ......但还没有阅读更多解释)
- ORM必须做的工作少(与之前的两种做法相比),因此应该有更好的表现.

其他信息
- 所有这三种方式都在双向关系实体实现(右???)
- 使用cascade = {"remove"}完全绕过任何外键onDelete = CASCADE.(参见doctrine_official_doc)

关于如何在代码中使用它的示例

  • orphanRemoval和cascade = {"remove"}在反转的实体类中定义.
  • ondelete ="CASCADE"在所有者实体中定义
  • 你也可以写@ORM\JoinColumn(onDelete ="CASCADE")并让doctrine处理列名

级联= { "去除"}

/**
* @OneToMany(targetEntity="Phonenumber", mappedBy="contact", …
Run Code Online (Sandbox Code Playgroud)

entity doctrine cascade symfony

89
推荐指数
1
解决办法
3万
查看次数

了解Doctrine级联操作

我想检查一下我对Doctrine关联的级联操作的理解.出于这个问题的目的,我有两个模型:CustomerInsuree.

如果我定义了一个许多人之间一对多的关系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;
Run Code Online (Sandbox Code Playgroud)

如果我定义了逆许多人的之间有很多关系Insuree,并Customer与集cascade{"all"},我明白,这将:

  • 向受保人添加新客户将持续存在此客户并在联接表中创建关联.
  • 从集合中移除客户将使客户与保险公司分离,并将保险公司与客户分离.
  • 删除受保人将删除与其相关的所有客户.

这是关联的定义Insurees.

/**
 * @ORM\ManyToMany(targetEntity="Customer", mappedBy="insurees", cascade={"all"})
 */
protected $customers;
Run Code Online (Sandbox Code Playgroud)

如果我然后定义关于级联保持,合并和分离的关系 - 删除保险人将不会删除所有相关客户 - 它只会删除保险公司与其客户之间的关联?

/**
 * @ORM\ManyToMany(targetEntity="Customer", mappedBy="insurees", cascade={"persist", "merge", "detach"})
 */
protected $customers;
Run Code Online (Sandbox Code Playgroud)

php doctrine cascade

61
推荐指数
1
解决办法
5万
查看次数

Doctrine:cascade ="remove"vs orphanremoval = true

上面两个选项有什么区别?什么时候最好选择每个选项?

doctrine cascade cascading-deletes symfony

58
推荐指数
1
解决办法
2万
查看次数

MySQL RESTRICT和NO ACTION

MySQL RESTRICT和FK之间有什么区别NO ACTION?从文档中他们看起来完全一样.是这样的吗?如果是这样,为什么两者都有?

mysql cascade foreign-keys

54
推荐指数
3
解决办法
4万
查看次数

Haar Cascades与人脸检测中的LBP级联

我一直在OpenCV(开源计算机视觉库)中进行面部检测实验,发现可以使用Haar级联来检测面部,因为其中有几个提供了OpenCV.但是,我注意到还有几个LBP级联.根据OpenCV人脸检测文档,经过一些研究,我发现LBP代表局部二进制模式,也可以用于人脸检测.

我想知道的是哪个更好?哪一个表现得更快,哪一个更准确?似乎LBP表现得更快,但我也不是100%肯定.谢谢.

opencv cascade face-detection haar-wavelet viola-jones

54
推荐指数
5
解决办法
5万
查看次数