问题标签 [circular-reference]

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 投票
2 回答
1039 浏览

java - POJO 与其他 POJO 引用

我正在开发一个 API 来访问存储在系统中的数据。该系统包含与这些约会相关的人员、约会和程序等内容。我的应用程序将严格只读。

我正在使用带有 RowMapper 的 Spring 来构建诸如“ Person”、“ Appointment”和“ Procedure”之类的对象。我对每个元素都有一个 DAO。(即:PersonDAO.getById(), PersonDAO.getByName(), ..)。

问题在于Appointment引用了一个Person对象。Person在对象中引用 that的约会会很好Person,但是如果我开始加载这些约会,它就会变成循环引用。

所以,我想我的问题是处理这个问题的正确方法只是将引用(Ids)放在 POJO 中,然后让业务层(?)进行正确的调用来获取信息?或者是否可以在实际 POJO 中以某种方式传递对 DAO 的引用,以便我可以在引用时延迟加载对象对象?但是你如何处理循环引用呢?当我有一个Person并且我懒惰地加载他们所有的约会时,这些约会也会有一个与之关联的人。当我加载它时Person,它可能具有与Person我正在加载约会的不同信息。

Person(对象 x)延迟加载 -> 约会可以延迟加载Person(对象 x')。

因为Person当我懒洋洋地加载他们的约会时可能已经改变了。我真的需要这个Person对象Appointment来引用同一个Person对象。

我全都被这件事吸引住了。我知道我可以“让它发挥作用”,但我想尝试找到一个好的解决方案。我正在考虑为此使用hibernate,但认为它真的只是矫枉过正。也许不是。

0 投票
1 回答
574 浏览

sql-server-2005 - 需要触发器帮助以防止表上的循环引用

我们目前有一个如下所示的表:

谁能帮我想出一个约束/触发器来阻止循环引用被插入或更新到表中?

谢谢

0 投票
4 回答
62753 浏览

javascript - 即使有循环引用,如何将 DOM 节点序列化为 JSON?

我想将 DOM 节点甚至整个序列化为windowJSON。

例如:

JSON.stringify()

问题是 JSON 默认不支持循环引用。

window并且 DOM 节点有很多。window === window.window一样document.body.ownerDocument === document

此外,JSON.stringify不序列化函数,所以这不是我要找的。

dojox.json.ref

很好,不是吗?

对我来说还不够好。

为什么?

我正在尝试为不同的浏览器制作 DOM 兼容性表。例如,Webkit 支持占位符属性而 Opera 不支持,IE 8 支持localStorage而 IE 7 不支持,等等。

我不想制作数千个测试用例。我想用通用的方法来测试它们。

更新,2013 年 6 月

我做了一个原型NV/dom-dom-dom.com

0 投票
3 回答
880 浏览

.net - .NET 程序集引用对我来说都是循环的

更新:昨晚,我认为更改保存某些报告的文件夹的工作量太大。我的解决方法是重命名文件夹,运行我需要完成的批处理作业,然后将文件夹名称改回原来的名称。我觉得我可以把今天剩下的时间和下周的所有时间都花在这上面,但仍然没有什么可展示的。我宁愿因为与我的老板背道而驰,也不愿不能向我们的客户开具发票(这种情况每年只发生一次)。感谢所有帮助过的人,我为你愿意帮助一些匿名的家伙而感到谦卑。我不知道如何“放弃”这个问题,但仍然给你们提供道具,我会在午餐时阅读常见问题解答和任何评论。谢谢你。

我正在尝试调试我的前任创建的 ac# 应用程序。他是程序员,我是系统管理员,也许这就是我出错的地方。

无论如何,我需要重新编译其中一个程序集并将其部署到我们的生产服务器。当我编译它时,我得到了错误:

'Mcrcsip.Web.McrcsipWebExceptionBase 类型在未引用的程序集中定义。您必须添加对程序集“Mcrcsip.Web, Version=2.0.3266.28977, Culture=neutral, PublicKeyToken=c3de6c6abcdf794b”的引用。

我碰巧有该程序集的副本,当我删除对现有程序集的引用(具有不同公钥令牌的 2.0.0.0)并添加对它所要求的程序集的引用时,当我编译时,出现此错误信息:

'Mcrcsip.Web.McrcsipWebExceptionBase 类型在未引用的程序集中定义。您必须添加对程序集“Mcrcsip.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=8bbdde85caf008d0”的引用。

如果我在谷歌上搜索这个错误(当然是通用的),我会得到一堆“这就是你添加程序集引用的方式......”结果。

我该如何摆脱这个旋转木马?

以下是解决方案的布局方式:

  • Mcrcsip.Amwa.Solution
    • http://amwa-test.internal.lan/
    • Mcrcsip.Amwa.Core
      • Mcrcsip.Aws.Bol
      • Mcrcsip.Common
      • Mcrcsip.Web
      • nunit.framework
      • 系统
      • 系统配置
      • 系统数据
      • 系统.企业服务
      • 系统.Web
      • 系统.Web.服务
      • 系统.XML
    • Mcrcsip.Amwa.CrFactory
      • CrystalDecisions.CrystalReports.Engine
      • CrystalDecisions.Enterprise.Framework
      • CrystalDecisions.Enterprise.InfoStore
      • CrystalDecisions.ReportSource
      • CrystalDecisions.Shared
      • CrystalDecisions.Web
      • Mcrcsip.Amwa.Core
      • Mcrcsip.Web
      • 系统
      • 系统配置
      • 系统数据
      • 系统绘图
      • 系统.Web
      • 系统.XML
    • Mcrcsip.Amwa.PdfFormHandler
      • itextsharp
      • Mcrcsip.Amwa.Core
      • Mcrcsip.Web
      • 系统
      • 系统配置
      • 系统数据
      • 系统.Web
      • 系统文件
    • Mcrcsip.Amwa.Web
      • Mcrcsip.Amwa.Core
      • Mcrcsip.Amwa.CrFactory
      • Mcrcsip.Amwa.PdfFormHandler
      • Mcrcsip.Aws.BOL
      • Mcrcsip.Common
      • Mcrcsip.SharePoint
      • Mcrcsip.Web
      • 系统
      • 系统配置
      • 系统数据
      • System.EnterpriseServices
      • 系统.Web
      • 系统.Web.服务
      • 系统.XML
    • Mcrcsip.Amwa.WebControls
      • 系统
      • 系统数据
      • 系统设计
      • 系统绘图
      • 系统.Web
      • 系统文件
    • Mcrcsip.Amwa.Setup
0 投票
1 回答
1770 浏览

.net - 如何检测 .NET 解决方案中程序集之间的循环引用?

您知道检测 .Net 程序集之间循环引用的有效方法吗?

我想检测/预防的情况如下:

  • A 参考 B
  • B 参考 C
  • C 参考 A
0 投票
4 回答
7429 浏览

php - 如果我有循环引用,我可以自动触发 PHP 垃圾收集吗?

我似乎记得一种设置__destruct类的方法,它可以确保一旦外部对象超出范围,循环引用就会被清除。但是,我构建的简单测试似乎表明这并没有像我预期/希望的那样表现。

有没有办法设置我的类,当最外面的对象超出范围时,PHP 会正确清理它们?

我不是在寻找编写此代码的替代方法,而是在寻找是否可以这样做,如果可以,如何?我通常会尽可能避免这些类型的循环引用。

输出如下所示:

我所希望的:

更新:

这个与 PHP > 5.3 相关的问题有几个很好的答案,但我选择了适用于 PHP < 5.3 的答案,因为它实际上与我的项目( PHP 5.2.x )有关。

0 投票
2 回答
3671 浏览

java - 创建循环通用引用

我正在编写一个应用程序来在对等网络中进行一些分布式计算。在定义网络时,我有两类 P2PNetwork 和 P2PClient。我希望这些是通用的,因此具有以下定义:

使用 P2PClient 定义 setNetwork(T network) 的方法。我希望用这段代码描述的是:

  1. P2PNetwork 由某种类型的客户端组成
  2. P2PClient 只能属于其客户端与该客户端(循环引用)相同类型的网络

这对我来说似乎是正确的,但如果我尝试创建一个非通用版本,例如

和其他变体我从编译器收到许多错误。所以我的问题如下:

  1. 通用循环引用是否可能(我从未见过任何明确禁止它的东西)?
  2. 上述通用定义是对这种循环关系的正确定义吗?
  3. 如果它是有效的,它是否是描述这种关系的“正确”方式(即是否有另一个有效的定义,在风格上是首选的)?
  4. 给定正确的通用定义,我将如何正确定义客户端和服务器的非通用实例?
0 投票
5 回答
5074 浏览

database-design - 数据库设计:循环引用

我有三个数据库表:

  • 用户
  • 电子邮件
  • 邀请函

电子邮件通过 user_id 字段链接到用户。

邀请也通过 user_id 字段链接到用户

无需邀请即可创建电子邮件,但每个邀请都必须有电子邮件。

我想链接电子邮件和邀请表,以便可以找到特定邀请的电子邮件。

但是,这会创建一个循环引用,邀请和电子邮件记录都保存同一用户的 id。

这是糟糕的设计吗?如果是这样,我该如何改进它?

我的感觉是使用外键和良好的业务逻辑就可以了。

0 投票
8 回答
18012 浏览

delphi - 在 Delphi 中绕过循环引用

有没有办法绕过 Delphi 中的循环单元引用?

也许是更新版本的德尔福或一些魔法黑客或什么的?

我的 delphi 项目有 100 000 多行代码,主要基于单例类。我需要重构它,但这意味着几个月的“循环引用”地狱:)

0 投票
2 回答
13534 浏览

sql - 访问sql查询循环引用错误

我正在为 access 数据库创建 sql 选择查询,并收到循环引用错误,因为我的别名与表达式中的列名相同。这是我的查询片段:

此特定别名是输出要求的一部分。有没有办法在不更改别名的情况下解决这个问题?

TIA