问题标签 [all-delete-orphan]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
265 浏览

database - nHibernate Cascade="Delete-Orphan" 用于多个键

假设我有以下 3 个表:

表 A、表 B 和表 C。

表 C 具有表 A 的外键。表 C 具有表 B 的外键。

当我从表 BI 中删除一行时,希望它删除表 C 中的孤儿,但前提是它不包含对表 A 的任何引用。如果它确实包含对表 AI 的引用,则希望它删除表 B 中的行和在表 C 中将外键设置为空。

这甚至可能吗?它的默认行为是什么?

0 投票
1 回答
596 浏览

grails - 如果使用复合 id,Grails 无法在单元测试中删除孤立的集合

我正在使用 Grails 2.4.4。我想用内存数据库测试单元测试类的持久性。我有一个与 Child 有 oneToMany 关系的 Parent 类。Child 由 Parent 拥有,并且具有涉及父级的复合键。当我尝试删除 Parent 内的集合中的一个 Children 时,如果我刷新,我会收到一个错误,如果我省略 'flush: true' 参数,则不会触发删除。

我想测试像这样注释的单元测试类中的关系

但是抛出异常

0 投票
1 回答
765 浏览

reference - Fluent NHibernate 参考/多对一映射级联都不起作用

我对级联所有(孤儿)有一些问题,并从数据库中删除旧的对象。

示例:我有一个包含 B 类对象的 A 类。现在,当我创建 A 类对象并保存它时,一切正常。当我再次调用该方法SetValueOfB(int i)并保存对象 A 时,旧对象 B 仍在数据库中。

类之间的关联是否必须始终是定向的(对于每个 HasMany/Reference/HasOne...)?(但对象 b 对对象 a 一无所知)

有没有办法解决单向关联的问题?

我需要一对一的映射吗?因为对象B只能属于对象A(A是参数,B是值)。

这是一个失败的测试:

}

或者这里是项目:vs project

0 投票
1 回答
6521 浏览

hibernate - hibernate 4.1.4 中 all-delete-orphan 的注解

我是这个休眠注释的新手。我想将此 xml 映射转换为注释:

这就是我所做的:

但是CascadeType.DELETE_ORPHAN被弃用了,那我怎么all-delete-orphan通过注解来表示呢?我正在使用休眠 4.1.4。

0 投票
0 回答
726 浏览

java - Hibernate @Cascade(CascadeType.DELETE_ORPHAN) 在应用于@ManyToOne 时是否正确?

让我们想象一下场景:EntityCompany和 EntityAddress具有一对多的双向关系。所以实体Address看起来像:

我要将这些代码迁移到不推荐使用的Hibernate 4.3地方CascadeType.DELETE_ORPHAN。当我试图用 替换CascadeType.DELETE_ORPHANorphanRemoval = true,它似乎orphanRemoval = true甚至不存在于@ManyToOne.

所以我的问题是:

  • AddressHbm使用不@Cascade(CascadeType.DELETE_ORPHAN)正确@ManayToOne

  • 如果@Cascade(CascadeType.DELETE_ORPHAN)在这里被误用,是否只删除它有效?

0 投票
2 回答
6856 浏览

java - 在 Hibernate 中使用孤儿删除

我正在Spring-Hibernate应用程序中工作。我的问题与orphan removal以下代码中的描述有关。

考虑到save/update User情景。一种方法是从列表中删除该子对象,例如user.getUserRoles().remove(userRole).
另一种方法可能是清除子列表user.getUserRoles().clear(),然后将其添加到列表中,无论请求中的用户角色如何。在这种情况下,未出现在请求中的用户角色将被删除orphan removal

哪一个更好更正确?

0 投票
1 回答
86 浏览

hibernate - 孤儿删除需要休眠多次保存

考虑以下实体模型:

档案实体。

佣金实体。

括号实体。

现在,当我想从档案中替换佣金时。我必须这样做:

请注意,存储库上的保存操作会根据传递的对象是否设置了其 id 来执行持久化或合并。

而一个头脑清醒的正常人会认为他可以简单地做到:

出于某种原因,无论佣金是否附有括号,我都需要:

  1. 清除现有佣金的括号
  2. 节省
  3. 删除现有的佣金
  4. 节省
  5. 坚持新的佣金
  6. 在档案中设置新的佣金
  7. 节省

跳过任何步骤都会导致此错误:

拥有实体实例不再引用具有 cascade="all-delete-orphan" 的集合:Commission.commissionBrackets

虽然对此可能有一个合理的解释,但它感觉非常难看,也许有一种更清洁的方法来做到这一点?除了删除现有的佣金,我还可以完全更新它,但这不会反映功能现实。

使用的休眠版本是:4.3.10。使用的最终数据库:postgres 9.4.4.1

所以我的问题是。我做得对还是在某处有所改进?

0 投票
2 回答
4678 浏览

sql - 删除 postgres 中的孤立记录。使用连接删除。表现

我有一个需要定期清理孤儿表的情况,所以我正在寻找一个高性能的解决方案。我尝试使用“IN”子句,但速度不是很快。列在两个表中都有所有必需的索引。(id - 主键,component_id - 索引,component_type - 索引)

基本上情况是从“component_apportionment”表中删除“ component_live 表中不存在的记录。

上面查询的查询计划也很糟糕:

将不胜感激任何帮助。谢谢

笔记

在最坏的情况下,每个表大约有 8000 万条记录。两个表都有已用列的索引。

更新

“不存在”的查询计划

询问:

它对两个表和更多数据进行 seq 扫描 - 它会越慢。

0 投票
1 回答
626 浏览

c# - NHibernate 多对多全删除孤儿

我有两个实体:DocumentFile以多对多关系连接。我希望他们表现如下:

  1. 文档有很多文件。
  2. 文件可以同时属于多个文档。
  3. 当我删除文档时,每个文件也应该被删除,除非它属于另一个文档。
  4. 当我从文档中删除某个文件时,它应该被删除,除非它属于另一个文档。

实体:

映射:

我保存了两个实例Document,其中包含相同的文件。当我尝试从 Document.Files 中删除文件或删除整个 Document 时,出现以下异常:

无法删除:[MyNameSpace.Files.Business.File#1][SQL: DELETE FROM File WHERE FileId = ?]

内部异常:

无法删除或更新父行:外键约束失败 ( my_base. documentfile, CONSTRAINT FKDB8FFE6221523AA6FOREIGN KEY ( FileId) REFERENCES file( FileId))

确实,我有这样的约束,我想保留它。问题是当我在映射中明确告知时,为什么 NHibernate 会尝试删除它:Cascade.AllDeleteOrphan()

0 投票
0 回答
68 浏览

python - 如何检测何时通过“删除孤儿”级联删除实例?

我正在尝试为我在after_flush侦听器中实现的一些表添加审核日志记录。通过访问session.new//dirty中的会话状态deleted,我可以得到我需要的信息。

好吧,至少在大多数情况下:我没有运气识别通过“删除孤儿”级联删除的实例。这些实例不会出现在 中session.deleted,而是出现在 中,而且session.dirty我找不到确定它们是否会被删除的方法。

用这个玩具模型来说明:

识别常规添加/更新/删除按预期工作:

到目前为止一切都很好。但是,当我通过关系更新作者的帖子时,这会导致通过级联删除“东西的来源”帖子,这个被删除的帖子只会显示为脏,而不是删除:

我如何检测到此帖子将被删除(或在after_flush听众的情况下已被删除)?