问题标签 [orphaned-objects]

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 投票
5 回答
866 浏览

.net - 在更新字段时防止 DB4O 中的孤立对象

我想将 Person 对象存储在 DB4O 中。人员位置字段可以随时间更改。所以我从数据库中检索一个人并调用一个方法来将位置字段设置为一个新的位置对象。(我希望 Location 对象是不可变的,即 DDD 值对象)。

这可行,但是先前分配的 Location 对象仍保留在数据库中。如何配置 DB4O 以除去这些孤立的 Location 对象?还是我需要一些自定义过程来进行垃圾收集?

此示例的简化类:

编辑:更多信息 - Person 是一个 DDD 聚合根。因此,没有对一个人的内部状态的外部引用。如果 Person 更新了它的位置,那么旧的位置应该不复存在。

0 投票
4 回答
1698 浏览

c# - 当一个对象(比如位图)成为孤立对象时,我该如何处理它?

我有一个类 A 为其他类 B、C 等提供位图。

现在,A 类将其位图保存在一个环形队列中,因此一段时间后它将失去对位图的引用。

虽然它仍在队列中,但同一个 Bitmap 可以被多个类签出,例如,B 和 C 都可以持有对同一个 Bitmap 的引用。但也有可能只有其中一个人检查了位图,甚至没有人检查过。

我想在 A、B 或 C 不再需要位图时处理它。

我想我必须让 B 和 C 负责在他们完成使用它时以某种方式发出信号,但我不确定整体逻辑。

是否应该调用 DisposeIfNowOrphan() 之类的东西,在这个例子中,它会被调用 3 次:

1 - 当位图在 A 类中被踢出队列时

2 - 当 B 完成它时

3 - 当 C 完成时

如果这是最好的策略,我该如何评估孤儿状态?

任何建议都将受到欢迎。

0 投票
1 回答
1463 浏览

arrays - 如何识别孤立节点

我有一个存储在数据库中的节点层次结构。我选择所有,将它们存储在一个数组中,然后遍历它们并在内存中创建一个嵌套数组。

输入如下所示:

[{name: A}, {name: B}, {name: X, parent: A}, {name: Y, parent: A}, {name: C}]

输出如下所示:

[{姓名:A,孩子:[{姓名:X},{姓名:Y}]},{B},{C}]

嵌套的深度没有限制。

我遇到的问题是,如果其中一条记录的父引用无效,则不能将其放入层次结构中,并且脚本以无限循环结束,试图找到父引用。

我敢打赌,有一种方法可以判断我何时陷入了无限循环。作为记录,当在循环中我意识到没有父项可以插入该项目时,我将项目推到数组的末尾,因为父项可能存在于该行中。

我想我应该能够意识到我一遍又一遍地循环相同的物品?

编辑 1 - 代码这是重要的一点:

($this->push() 是一种尝试查找父对象的方法,如果成功,则将 $item 插入其层次结构中)

0 投票
1 回答
899 浏览

eclipselink - EclipseLink 不删除私有的一对多项目

我无法让 Eclipselink 删除映射为一对多关系的私有实体。当我从一对多集合中删除私有实体并将对其父级的引用设置为 NULL 然后保存父级时,私有实体不会从数据库中删除。但是,它已从对象中移除,并且在会话的剩余时间内,私有实体似乎实际上已被移除。

这是一个映射

我尝试添加所有级联,还添加了@CascadeOnDelete,以及它们的每一种组合,人们认为这不会产生影响,但事实并非如此。

另一边:

我尝试添加 JoinColumn(nullable=false) 并删除 @ManyToOne 注释,以及这些注释的存在/删除的每个组合。这些变化都没有任何影响。

删除代码:

更新的代码:

保存代码:

0 投票
3 回答
228 浏览

ruby-on-rails - Rails 如何:如果一个项目有不应删除的任务:我该如何解决这个问题?

嗨,我有一个项目,每个项目都有任务。一个任务属于一个项目。在我删除项目之前,我想检查是否有相关任务。如果有任务我不想删除项目。如果没有关联的任务,则应删除该项目。你能帮我写代码吗?我错过了什么?

0 投票
1 回答
1413 浏览

oracle - 为什么 OracleAQ 将死订户留在队列中?

这是 Oracle 11.2.0.3。

我们在使用 Oracle 的 JMS 而不是 OracleAQ 时遇到了问题。这工作正常,除了我们开始注意到队列被填满 1000 条消息,然后随着时间的推移数百万条消息。其中一些处于 PROCESSED 状态,但大多数处于就绪状态。我们将此行为追溯到该主题的“僵尸”或死亡订阅者。当 Java 进程终止并且没有机会注销自己时,它会将订阅者记录留在队列中,而 ORacle 似乎没有检测到它已经死亡。以至于 MONTHS 之后,发送到我们的多订阅者队列的新消息将乘以订阅者的数量,它认为这比实际要高得多。(当我们达到最大订阅者限制时,我们首先注意到了这一点。)

我们已经运行了 qmon 进程——我什至尝试增加最小进程数以使其无效。只要队列中没有死订阅者,队列清理就会非常顺利。

任何人都看到过这个,并希望找到一个解决方案?

0 投票
3 回答
1226 浏览

django - 在 Django 中有效地删除孤立的 m2m 对象/标签

我有两个模型 - 照片和标签 - 通过 ManyToManyField 连接。

每隔一段时间,我们就会得到孤立的标签,任何照片都不再引用这些标签。有没有删除这些标签的有效方法?我知道这个答案: Django: delete M2M orphan entries?

我们的解决方案目前看起来是这样的:

但是,随着数据库的增加,这个脚本的运行时间变得非常高:-P 有没有一种有效的方法可以从标签表中获取所有标签 ID 的列表,然后从多对多中获取所有标签 ID 的列表表来创建交集列表?

0 投票
3 回答
1744 浏览

azure - 自动过期孤立订阅 (Azure ServiceBus Messaging SubscriptionClient)

我想到的场景是这样的:服务总线用于实例到实例的通信,因此每个服务实例的订阅都是唯一的。最终结果是,如果一个实例没有正常关闭,它的订阅不会被删除。

当服务实例“死亡”并重新启动时,订阅的先前内容无关紧要,可以丢弃。

那么,有没有办法为服务总线订阅设置“生存时间”或模拟类似的东西,而不必求助于一些自定义的孤儿检测机制?

0 投票
3 回答
972 浏览

java - 无法在 Hibernate 中删除孤儿

我发现了很多这些问题,但由于某种原因,它们对我不起作用。所以,我显然做错了什么。

表单对象:

表单域对象:

我正在使用休眠注释:

如果我在表单中创建一个表单字段对象,那么没有问题。两个对象都已创建。当我删除表单对象时,表单字段对象保留在数据库中。

0 投票
1 回答
1115 浏览

sql-server-2012 - 恢复到不在域上的新机器后的孤立用户;了解KB918992

寻求澄清/确认:如果我理解正确,以下关于“孤立用户”的注意事项仅适用于与 Windows 网络安全主体相关联的用户;当数据库恢复到不在原始网络上的另一台计算机并且运行 sp_help_rev_login 脚本时,与“纯”SQL Server 登录关联的用户不会成为孤立用户。是对的吗?

来自http://support.microsoft.com/kb/918992

如果服务器 A 和服务器 B 在不同的域中,则必须更改输出脚本。然后,您必须在 CREATE LOGIN 语句中使用新域名来替换原始域名。在新域中被授予访问权限的集成登录名与原始域中的登录名不具有相同的 SID。因此,用户与这些登录无关。有关如何解决这些孤立用户的详细信息,请单击以下文章编号以查看 Microsoft 知识库中的文章: 240872 在运行 SQL Server 的服务器之间移动数据库时如何解决权限问题 如果服务器 A 和服务器 B在同一个域中,使用相同的 SID。因此,用户不太可能成为孤儿。