标签: cascade

JPA Hibernate多对多级联

我正在使用JPA 2.0和hibernate.我有一个User类和一个Group类,如下所示:

public class User implements Serializable {
    @Id
    @Column(name="USER_ID")
    private String userId;

    @ManyToMany
    @JoinTable(name = "USER_GROUP",
               joinColumns = {
                   @JoinColumn(name = "GROUP_ID")
               },
               inverseJoinColumns = {
                   @JoinColumn(name = "USER_ID")
               }
    )
    private Set<Group> groupList;

    //get set methods
}

public class Group
{
    @Id
    @Column(name="GROUP_ID")
    private String groupId;

    @ManyToMany(mappedBy="groupList")
    private Set<User> memberList;
    //get set methods
}
Run Code Online (Sandbox Code Playgroud)

然后,我创建一个用户和组,然后将用户分配给该组.

我想要的是当我删除该组时,该组将被删除(当然),该组所拥有的所有用户组关系将自动从USER_GROUP连接表中删除,但用户本身不会从USER表.

使用上面的代码,当我删除一个组时,只删除GROUP表中的行,并且用户仍然会在USER_GROUP连接表中有一个已删除组的条目.

如果我将Cascade放在User类中,如下所示:

@ManyToMany(cascade=CascadeType.ALL)
@JoinTable(name = "USER_GROUP",
joinColumns =
{
    @JoinColumn(name = "GROUP_ID")
},
inverseJoinColumns =
{
    @JoinColumn(name = "USER_ID")
})
private Set<Group> …
Run Code Online (Sandbox Code Playgroud)

many-to-many hibernate jpa cascade jpa-2.0

49
推荐指数
3
解决办法
6万
查看次数

休眠中级联和反向有什么区别,它们用于什么?

如何在休眠中使用级联和反向?定义它们的过程/标记是什么?它们是否相互关联,它们如何有用?

java hibernate cascade inverse

42
推荐指数
3
解决办法
6万
查看次数

OneToMany的Doctrine Cascade选项

我很难理解Doctrine手册对级联操作的解释,需要有人帮助我理解简单的ManyToOne关系中的选项.

在我的应用程序中,我有一个名为Article的表/实体,它有一个外键字段,引用名为Topic的表/实体中的'id'字段.

当我创建新文章时,我从下拉菜单中选择主题.这会在Article表的'topic_id'外键字段中插入一个整数.

我在Article实体中设置了$ topic关联,如下所示:

/**
 * @ManyToOne(targetEntity="Topic")
 * @JoinColumn(name="topic_id", referencedColumnName="id", nullable=false)
 */
private $topic;
Run Code Online (Sandbox Code Playgroud)

主题实体没有关于Article实体的任何往复注释.当删除引用主题的文章时,主题不关心什么文章引用它们,并且不需要在主题中发生任何事情.

因为我没有在Article实体中指定级联操作,所以当我尝试创建新文章时,Doctrine会抛出错误:"通过未配置为级联持久操作的关系找到新实体.明确地保留新实体或者在关系上配置级联持久化操作."

所以我知道我需要选择一个级联操作来包含在Article实体中,但是我怎么知道在这种情况下选择哪个操作呢?

从阅读Doctrine手册开始,"分离"听起来就像是正确的选择.但是在这里这里研究其他人的类似问题让我觉得我想用"坚持"代替.

任何人都可以帮助我理解"持久","删除","合并"和"分离"是否意味着简单的ManyToOne关系,就像我所描述的那样?

cascade doctrine-orm

39
推荐指数
1
解决办法
4万
查看次数

如何在mysql中使用删除级联?

我有一个组件数据库.每个组件都是特定类型.这意味着组件和类型之间存在多对一关系.当我删除一个类型时,我想删除所有具有该类型外键的组件.但是如果我没弄错的话,级联删除会在删除组件时删除该类型.有没有办法做我描述的?

mysql sql cascade foreign-keys

38
推荐指数
2
解决办法
7万
查看次数

我应该使用CASCADE DELETE规则吗?

重复:何时/为什么在SQL Server中使用级联?

我总是害怕使用DELETE CASCADE,但随着我越来越自信(懒惰:D),我在想它有多糟糕,最好的做法是使用它还是我应该避免它并清理我的外键等老式方式(带存储过程)?

sql sql-server cascade

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

在SQL Server 2005中,我可以在不设置表格属性的情况下进行级联删除吗?

我有一个充满客户数据的数据库.这是如此之大,以至于操作起来非常麻烦,我宁愿将其减少到10%的客户,这对于开发来说是充足的.我有很多表,我不想用"ON DELETE CASCADE"改变它们,特别是因为这是一次性的交易.

我可以执行删除操作,在没有先设置它们的情况下级联所有表吗?如果没有,我最好的选择是什么?

sql-server sql-server-2005 cascade

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

PostgreSQL:FOREIGN KEY/ON DELETE CASCADE

我有两张桌子在这里:

DROP   TABLE  IF EXISTS schemas.book;
DROP   TABLE  IF EXISTS schemas.category;
DROP   SCHEMA IF EXISTS schemas;
CREATE SCHEMA schemas;

CREATE TABLE schemas.category (
  id          BIGSERIAL PRIMARY KEY,
  name        VARCHAR   NOT NULL,
  UNIQUE(name)
);

CREATE TABLE schemas.book (
  id          BIGSERIAL PRIMARY KEY,
  published   DATE      NOT NULL,
  category_id BIGINT    NOT NULL REFERENCES schemas.category ON DELETE CASCADE ON UPDATE CASCADE,
  author      VARCHAR   NOT NULL,
  name        VARCHAR   NOT NULL,
  UNIQUE(published, author, name),
  FOREIGN KEY(category_id) REFERENCES schemas.category (id)
);
Run Code Online (Sandbox Code Playgroud)

所以逻辑很简单,用户删除了类别x下​​的所有书籍后,x从猫中删除,我尝试了上面的方法但是不起作用,在我清理了表格书之后,表格类别仍然填充,有什么问题?

sql postgresql cascade

27
推荐指数
2
解决办法
7万
查看次数

NHibernate Definitive Cascade应用指南

是否有任何互联网资源对NHibernate的所有级联设置有明确的指导,其中包括类结构,HBM的示例以及与NH的所有关系的每个级联设置的动作的含义.

如果有以最正确的方式进行公共关联的示例,例如设置状态表,您将永远不会最终级联删除状态,或者删除具有CreatedBy用户属性的对象,那么它将会很有用.永远不会在级联等中删除用户

c# nhibernate cascade

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

SQL Server:drop table cascade等效?

在oracle中,要删除所有表和约束,您可以键入类似的内容

DROP TABLE myTable CASCADE CONSTRAINTS PURGE;
Run Code Online (Sandbox Code Playgroud)

这将完全删除表及其依赖项.什么是SQL服务器等价?

sql sql-server cascade database-table sql-drop

25
推荐指数
3
解决办法
7万
查看次数

在级联删除中触发调用

我在MySQL中有表"A".它有一些参考,级联删除到一些其他表("B","C","D"......).当某些内容从"A"中删除时,我需要使用触发器.当我直接从"A"删除记录时,此触发器有效.但它不适用于级联删除.是否存在任何版本的MySQL,我的触发器将与级联删除一起使用?或者,也许还有另一种方式来打电话

mysql triggers cascade cascading-deletes

25
推荐指数
3
解决办法
9806
查看次数