问题标签 [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.
database - nHibernate Cascade="Delete-Orphan" 用于多个键
假设我有以下 3 个表:
表 A、表 B 和表 C。
表 C 具有表 A 的外键。表 C 具有表 B 的外键。
当我从表 BI 中删除一行时,希望它删除表 C 中的孤儿,但前提是它不包含对表 A 的任何引用。如果它确实包含对表 AI 的引用,则希望它删除表 B 中的行和在表 C 中将外键设置为空。
这甚至可能吗?它的默认行为是什么?
grails - 如果使用复合 id,Grails 无法在单元测试中删除孤立的集合
我正在使用 Grails 2.4.4。我想用内存数据库测试单元测试类的持久性。我有一个与 Child 有 oneToMany 关系的 Parent 类。Child 由 Parent 拥有,并且具有涉及父级的复合键。当我尝试删除 Parent 内的集合中的一个 Children 时,如果我刷新,我会收到一个错误,如果我省略 'flush: true' 参数,则不会触发删除。
我想测试像这样注释的单元测试类中的关系
但是抛出异常
reference - Fluent NHibernate 参考/多对一映射级联都不起作用
我对级联所有(孤儿)有一些问题,并从数据库中删除旧的对象。
示例:我有一个包含 B 类对象的 A 类。现在,当我创建 A 类对象并保存它时,一切正常。当我再次调用该方法SetValueOfB(int i)
并保存对象 A 时,旧对象 B 仍在数据库中。
类之间的关联是否必须始终是定向的(对于每个 HasMany/Reference/HasOne...)?(但对象 b 对对象 a 一无所知)
有没有办法解决单向关联的问题?
我需要一对一的映射吗?因为对象B只能属于对象A(A是参数,B是值)。
这是一个失败的测试:
}
或者这里是项目:vs project
hibernate - hibernate 4.1.4 中 all-delete-orphan 的注解
我是这个休眠注释的新手。我想将此 xml 映射转换为注释:
这就是我所做的:
但是CascadeType.DELETE_ORPHAN
被弃用了,那我怎么all-delete-orphan
通过注解来表示呢?我正在使用休眠 4.1.4。
java - Hibernate @Cascade(CascadeType.DELETE_ORPHAN) 在应用于@ManyToOne 时是否正确?
让我们想象一下场景:EntityCompany
和 EntityAddress
具有一对多的双向关系。所以实体Address
看起来像:
我要将这些代码迁移到不推荐使用的Hibernate 4.3
地方CascadeType.DELETE_ORPHAN
。当我试图用 替换CascadeType.DELETE_ORPHAN
时orphanRemoval = true
,它似乎orphanRemoval = true
甚至不存在于@ManyToOne
.
所以我的问题是:
AddressHbm
使用不@Cascade(CascadeType.DELETE_ORPHAN)
正确@ManayToOne
?如果
@Cascade(CascadeType.DELETE_ORPHAN)
在这里被误用,是否只删除它有效?
java - 在 Hibernate 中使用孤儿删除
我正在Spring-Hibernate
应用程序中工作。我的问题与orphan removal
以下代码中的描述有关。
考虑到save/update User
情景。一种方法是从列表中删除该子对象,例如user.getUserRoles().remove(userRole)
.
另一种方法可能是清除子列表user.getUserRoles().clear()
,然后将其添加到列表中,无论请求中的用户角色如何。在这种情况下,未出现在请求中的用户角色将被删除orphan removal
。
哪一个更好更正确?
hibernate - 孤儿删除需要休眠多次保存
考虑以下实体模型:
档案实体。
佣金实体。
括号实体。
现在,当我想从档案中替换佣金时。我必须这样做:
请注意,存储库上的保存操作会根据传递的对象是否设置了其 id 来执行持久化或合并。
而一个头脑清醒的正常人会认为他可以简单地做到:
出于某种原因,无论佣金是否附有括号,我都需要:
- 清除现有佣金的括号
- 节省
- 删除现有的佣金
- 节省
- 坚持新的佣金
- 在档案中设置新的佣金
- 节省
跳过任何步骤都会导致此错误:
拥有实体实例不再引用具有 cascade="all-delete-orphan" 的集合:Commission.commissionBrackets
虽然对此可能有一个合理的解释,但它感觉非常难看,也许有一种更清洁的方法来做到这一点?除了删除现有的佣金,我还可以完全更新它,但这不会反映功能现实。
使用的休眠版本是:4.3.10。使用的最终数据库:postgres 9.4.4.1
所以我的问题是。我做得对还是在某处有所改进?
sql - 删除 postgres 中的孤立记录。使用连接删除。表现
我有一个需要定期清理孤儿表的情况,所以我正在寻找一个高性能的解决方案。我尝试使用“IN”子句,但速度不是很快。列在两个表中都有所有必需的索引。(id - 主键,component_id - 索引,component_type - 索引)
基本上情况是从“component_apportionment”表中删除“ component_live ”表中不存在的记录。
上面查询的查询计划也很糟糕:
将不胜感激任何帮助。谢谢
笔记
在最坏的情况下,每个表大约有 8000 万条记录。两个表都有已用列的索引。
更新
“不存在”的查询计划
询问:
它对两个表和更多数据进行 seq 扫描 - 它会越慢。
c# - NHibernate 多对多全删除孤儿
我有两个实体:Document
并File
以多对多关系连接。我希望他们表现如下:
- 文档有很多文件。
- 文件可以同时属于多个文档。
- 当我删除文档时,每个文件也应该被删除,除非它属于另一个文档。
- 当我从文档中删除某个文件时,它应该被删除,除非它属于另一个文档。
实体:
映射:
我保存了两个实例Document
,其中包含相同的文件。当我尝试从 Document.Files 中删除文件或删除整个 Document 时,出现以下异常:
无法删除:[MyNameSpace.Files.Business.File#1][SQL: DELETE FROM File WHERE FileId = ?]
内部异常:
无法删除或更新父行:外键约束失败 (
my_base
.documentfile
, CONSTRAINTFKDB8FFE6221523AA6
FOREIGN KEY (FileId
) REFERENCESfile
(FileId
))
确实,我有这样的约束,我想保留它。问题是当我在映射中明确告知时,为什么 NHibernate 会尝试删除它:Cascade.AllDeleteOrphan()
python - 如何检测何时通过“删除孤儿”级联删除实例?
我正在尝试为我在after_flush
侦听器中实现的一些表添加审核日志记录。通过访问session.new
//dirty
中的会话状态deleted
,我可以得到我需要的信息。
好吧,至少在大多数情况下:我没有运气识别通过“删除孤儿”级联删除的实例。这些实例不会出现在 中session.deleted
,而是出现在 中,而且session.dirty
我找不到确定它们是否会被删除的方法。
用这个玩具模型来说明:
识别常规添加/更新/删除按预期工作:
到目前为止一切都很好。但是,当我通过关系更新作者的帖子时,这会导致通过级联删除“东西的来源”帖子,这个被删除的帖子只会显示为脏,而不是删除:
我如何检测到此帖子将被删除(或在after_flush
听众的情况下已被删除)?