2014-03-24 51 views
0

SDN V3.0.0发布 Neo4j的社区我有一个有点问题与问候继承和集合2.0.1弹簧数据的Neo4j类多态性

。也许有人可以协助解决这个问题。我基本上有以下结构。

public abstract class Graphic; 

public class Shape1 extends Graphic; 

public class Shape2 extends Graphic; 

public class Shape3 extends Graphic; 

public class Overlay { 

    Set<Graphic> graphics; 

} 

public interface GraphicsRepository extends GraphRepository<Graphic>{} 

我可以使用图形存储库保存图形,并根据具体的类正确存储所有各种属性。我可以使用正确的属性查询和获取单个图形,并在neo4j“门户”环境中执行各种与类关联的事情。但是当我在覆盖图上进行检索时,我只能获得基类Graphic作为集合中的类类型并且不能工作。我可能会忽视某些事情,或者只是没有做正确的事情,但我想我会发布,看看有没有人可以建议。我搜索谷歌和堆栈溢出,并且只发现类似的问题,它是主要类,从来没有内部的对象集合。

此外,当我从Graphic类中移除抽象时,我得到了相同的结果叠加图形集中的所有项都是Graphic类型。并且添加@TypeAlias似乎没有帮助。

由于

回答

1

好吧,我发现这个问题......有种感觉愚蠢,但我忘了把@Fetch的图形集合。奇怪的是,它确实检索图形对象,但它们都是Graphic的类型。当我添加访问集合,收集项目检索与正确的类型。

0

实际上它应该使用存储在图中的类型来构造实体,即,最具体类型(在SDN 3.0.1它是由“_”前缀,所以应该是“_Shape1”等等)

你可以检查图中节点的标签吗?

+0

Michael,谢谢你的回复。 我检查过图中的标签,所有节点都有正确的标签,前面加了“_”。所有扩展其他类的类也都有父类标签。但是,当访问叠加层中的集合时,无论是通过迭代器还是每个循环等,类型始终为Graphic。 –

+0

进一步的调查显示,当我检索图形时,GraphicRepository findAll会保留类型信息。但是,检索图形集合时OverlayRepository不会。当我遇到他们时,会分享更多细节。 –