如何在Voyage中坚持呈现循环引用的图表?

时间:2013-06-11 08:46:18

标签: persistence smalltalk pharo

我有一个问题我不记得大约半年前尝试过Voyage时。

在我的架构中,用户 instVar 引用了他所属的所有中心,以及中心有一个 instVar 引用其所有用户,因此当Voyage序列化程序尝试序列化用户(或中心)时,它会进入无限循环,试图找到参考链的末端和图像堵塞。

我记得前一段时间没有问题保存完全相同的模式,我应该知道一些新的东西吗?

BTW,我正在使用 #bleedingEdge 版本,使用Magritte3和所有版本。

谢谢! :)

1 个答案:

答案 0 :(得分:1)

我试图重现你的问题,它在我的例子中工作正常。 我做的是这个:

你有一个拥有行星的星星,它的时间指向所有者Star。

Star new 
    name: 'Sun';
    position: 10@12;
    addPlanet: (Planet new 
        name: 'Earth';
        orbit: 3;
        yourself);
    save

两种可能的组合对我有用:

Star class>>#isVoyageRoot
    ^ true
Planet class>>#isVoyageRoot
    ^ true

和:

Star class>>#isVoyageRoot
    ^ true
Planet class>>#isVoyageRoot
    ^ false

所以......我不知道你的错误在哪里:(