Spring数据neo4j实体加载策略:如何使存储库只加载我需要的数据?

时间:2018-06-06 18:32:28

标签: spring neo4j spring-data-neo4j

以下是场景:主要实体类是TreeNode,它表示树中的节点,因此具有反射关系,如:

@Relationship(type="CHILD_NODE")
List<TreeNode> childNodes;

我想要的是:一个存储库方法,给定根节点的id,返回相应的TreeNode实体,所有后代节点都加载。即我希望该方法加载无限加载深度的实体。动机是通过这个我可以在控制器中返回根节点,将其渲染为json,如:

{
    "id": 1,
    "childNodes": [{
        "id": 2,
        "childNodes": [...]
    }, {
        "id": 3,
        "childNodes": [...]
    }]
 }

我发现自SDN 4.2以来引入了@Depth注释,我可以设置depth = -1来实现我的需要。不幸的是,除了子节点之外,TreeNode还有其他与之关联的关系,这意味着使用无限深度可能会导致巨大的冗余开销。我只需要树的结构数据。

我还尝试使用带有pattern comprehension的带注释的查询,但这只能返回集合的实体而不是单个实体(根)。当然,我可以将过滤器应用于返回的集合以查找根节点,但我正在寻找更好的解决方案。

提前致谢。

0 个答案:

没有答案