我们有一个项目使用Spring Data Neo4J。其中一个重要实体如下所示:
我们需要找到所有叶子类别(即没有任何子类别的类别)的要求,从一个已知名称的特定类别开始。例如,给定以下层次结构:
搜索"Furniture"应该返回"办公桌"、"家庭桌子"、"休息椅"和"办公椅"。同样,搜索"Computing"应该返回"台式机"、"笔记本电脑"、"平板电脑"和"上网本"。
需要帮助创建一个密码查询,可以放置在Spring Data存储库方法中,以便从指定节点开始给我所有叶节点。
编辑后的以下查询(与相关的Spring Data存储库方法)在Wes的帮助下工作:
@NodeEntity
public class Category {
@GraphId
Long id;
String name;
@RelatedTo(direction = Direction.INCOMING, type = "CHILD")
Category parent;
@RelatedTo(direction = Direction.OUTGOING, type = "CHILD")
Set<Category> children;
}
我们需要找到所有叶子类别(即没有任何子类别的类别)的要求,从一个已知名称的特定类别开始。例如,给定以下层次结构:
Electronics
Camera
Point and Shoot
SLR
Computing
Desktop
Laptop
Tablet
Netbook
Furniture
Tables
Office tables
Home tables
Chairs
Lounge chairs
Office chairs
搜索"Furniture"应该返回"办公桌"、"家庭桌子"、"休息椅"和"办公椅"。同样,搜索"Computing"应该返回"台式机"、"笔记本电脑"、"平板电脑"和"上网本"。
需要帮助创建一个密码查询,可以放置在Spring Data存储库方法中,以便从指定节点开始给我所有叶节点。
编辑后的以下查询(与相关的Spring Data存储库方法)在Wes的帮助下工作:
@Query(
"START category=node:__types__(className='org.example.domain.Category') " +
"MATCH category-[:CHILD*0..]->child " +
"WHERE category.name={0} AND NOT(child-[:CHILD]->()) " +
"RETURN child")
List<Category> findLeaves(String name);