标签: cascade

Nhibernate Cascade

什么是级联NHibernate的是什么意思?

我在级联中看到了很多选项:

  • 删除
  • 所有
  • AllDeleteOrphan
  • DeleteOrphan
  • SaveUpdate

你能用例子及其区别来解释这些吗?

.net nhibernate orm cascade

24
推荐指数
1
解决办法
9663
查看次数

MySQL上的删除级联.测试例

我想知道这个测试问题.我自己准备了这个例子并进行了测试,但我仍然不确定答案.

具有以下内容:

CREATE TABLE foo (
  id INT PRIMARY KEY AUTO_INCREMENT, 
  name INT
)

CREATE TABLE foo2 (
  id INT PRIMARY KEY AUTO_INCREMENT, 
  foo_id INT REFERENCES foo(id) ON DELETE CASCADE
)
Run Code Online (Sandbox Code Playgroud)

据我所知,答案是:

一个.创建了两个表

虽然也有:

湾 如果删除表foo2中foo_id为2的行,则会自动删除表foo中id = 2的行

d.如果删除表foo中id = 2的行,则删除表foo2中foo_id = 2的所有行

在我的例子中,我会使用删除语法:

DELETE FROM foo WHERE id = 2;
DELETE FROM foo2 WHERE foo_id = 2;
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我无法找到表格之间的任何关系,尽管看起来应该有一个.也许有一些MySQL设置或者可能ON DELETE CASCADE在表创建查询中没有正确使用?我不知道......

mysql cascade

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

Postgres外键'on update'和'on delete'选项如何工作?

任何人都可以提供这些功能的明确解释/示例,以及何时使用它们?

sql postgresql database-design cascade foreign-keys

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

REMOVE和DELETE有什么区别?

是否有区别:

  • @Cascade(org.hibernate.annotations.CascadeType.REMOVE)和
  • @Cascade(org.hibernate.annotations.CascadeType.DELETE)?

annotations hibernate cascade cascading-deletes

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

多对多结构中的删除

我只是想快点检查一下.假设我在数据模型中有两个实体:Catalog和Product.它们之间具有多对多关系,并且都是必需的(目录必须至少有一个产品,并且所有产品必须各自属于至少一个目录).因此,如果我要删除一个产品,它的删除当然应该是Nullify.

但是删除政策对于目录应该是什么?如果删除目录,则并非其所有产品都必须完全属于它.产品可能属于多个目录.所以我绝对不应该使用Cascade.但是,Nullify是否足够?如果我最终得到不属于目录的悬挂产品怎么办?Core Data内置了什么可以用多对多模式解决这个问题?我需要修改我的架构吗?

many-to-many cascade core-data data-integrity

21
推荐指数
2
解决办法
2147
查看次数

如何在Django中使用DeleteView显示相关项目?

我正在做一个视图从模型中删除(使用Django的通用视图DeleteView)一个实例,但它从其他模型级联并删除实例:

url(r'^person/(?P<pk>\d+)/delete/$', login_required(DeleteView.as_view(model=Person, success_url='/person/', template_name='delete.html')), name='person_delete'),
Run Code Online (Sandbox Code Playgroud)

我想要做的是显示将被删除的相关项目列表,如管理界面所做的那样,如:

Are you sure you are going to delete Person NAMEOFTHEPERSON?
By deleting it, you are also going to delete:
CLASSNAME1: CLASSOBJECT1 ; CLASSNAME2: CLASSOBJECT2 ; CLASSNAME3: CLASSOBJECT3 ; etc
Run Code Online (Sandbox Code Playgroud)

django cascade view

20
推荐指数
2
解决办法
6596
查看次数

Hibernate:OneToMany通过级联保存孩子

在Parent类中有一个列表List.保存父级时,已添加或更改的子级应由休眠保存/更新.

我已经找到了很多这方面的解释,但是,我只是没有得到它的工作.

Parent.class尝试A.

@Entity
public class Parent {
// id and other attributes
@OneToMany(mappedBy = "parent")
@org.hibernate.annotations.Cascade(org.hibernate.annotations.CascadeType.ALL)
protected List<child> children;
Run Code Online (Sandbox Code Playgroud)

Parent.class尝试B

@Entity
public class Parent {
// id and other attributes
  @OneToMany(mappedBy = "parent", cascade = { javax.persistence.CascadeType.ALL },
 orphanRemoval = true)
 @org.hibernate.annotations.Cascade({ 
 org.hibernate.annotations.CascadeType.PERSIST,
 org.hibernate.annotations.CascadeType.MERGE,
 org.hibernate.annotations.CascadeType.REFRESH,
 org.hibernate.annotations.CascadeType.SAVE_UPDATE,
 org.hibernate.annotations.CascadeType.REPLICATE,
 org.hibernate.annotations.CascadeType.LOCK,
 org.hibernate.annotations.CascadeType.DETACH })
protected List<child> children;
Run Code Online (Sandbox Code Playgroud)

将子项添加到新父项.之后两者都被保存了

sessionFactory.getCurrentSession().saveOrUpdate(parent);
Run Code Online (Sandbox Code Playgroud)

但是,当刷新时,我收到以下错误:

org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: de.pockettaxi.backend.model.ride.RideSingle
at org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:243)
at org.hibernate.type.EntityType.getIdentifier(EntityType.java:456)
at org.hibernate.type.ManyToOneType.isDirty(ManyToOneType.java:265)
at org.hibernate.type.ManyToOneType.isDirty(ManyToOneType.java:275) …
Run Code Online (Sandbox Code Playgroud)

hibernate cascade one-to-many hibernate-annotations

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

如何强制oracle执行级联删除而不删除/重新创建约束

我有一个父表,它有一个引用它的dosen子表.这些子表又具有引用它们的其他子表.等等.

我需要从主父表中删除一行,将其一直向下级联.

在整个地方删除/重新创建约束以使它们"ON CASCADE DELETE"不是一个选项

仔细检查所有这些并手动删除子行是一场噩梦.

还有其他选择吗?

sql oracle cascade

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

Django on_delete = models.CASCADE在SQL级别没有任何影响

我的models.py文件包含:

class User(models.Model):
    email = models.CharField(max_length=100, unique=True)
    password = models.CharField(max_length=100)
    create_time = models.DateTimeField(auto_now_add=True)

class Session(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    token = models.CharField(max_length=100, unique=True)
Run Code Online (Sandbox Code Playgroud)

当我命令python manage.py makemigrations然后命令python manage.py sqlmigrate <app_name> <migration_name>我没有看到任何说"ON DELETE = CASCADE"

但是,当我键入时,迁移工作没有失败python manage.py migrate.

现在,如果我转到mysql表(使用SequelPro)并尝试为当前有会话条目的用户删除一行,我会收到以下错误:" 未删除一行.重新加载表格以确保在此期间内容没有改变.检查控制台是否有可能在此表的主键内发生错误! ".

现在,当我转到会话表并删除该用户的会话,然后尝试从用户表中删除用户的行时,它会正确删除.这表明ON DELETE = CASCADE实际上并没有在MySQL级别工作.

我怎么能纠正它?

python mysql django cascade cascading-deletes

19
推荐指数
1
解决办法
5403
查看次数

如何在rails中删除父对象时删除子对象?

模特a:

has_many :b, :dependent => :delete_all
Run Code Online (Sandbox Code Playgroud)

模型b:

belongs_to :a
belongs_to :c
Run Code Online (Sandbox Code Playgroud)

模型c:

has_many :b
Run Code Online (Sandbox Code Playgroud)

当我删除一个时a,我也希望b's删除子项,以便从c's可能引用它们的任何内容中删除它们.但是,上述方法无效.我很感激任何帮助.

activerecord cascade ruby-on-rails associations

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