下面是我的上下文的概念示例:
我有一个名为的抽象类:(User
包含一个id
属性为字符串)
我有一个User
名为的子类:FacebookUser
我有一个User
名为的子类:TwitterUser
使用 Spring-Data-Neo4j,我制作User
了一个@NodeEntity
.
我创建了一个测试类,以便在图中插入 aFacebookUser
和 a TwitterUser
。
整个井发生 => 两个节点都被插入并且有一个_类型_包含子类的完全限定名称。
例如:com.myApp.model.user.FacebookUser
。
现在,我想进行这种密码查询:
检索 id = 123 的用户
因此,我必须找到更有效的方法来检查所有用户节点(FacebookUser
s 和 的联合TwitterUser
),以便找到唯一的对应记录.
我希望找到一种方法来告诉密码是这样的:
获取每个索引匹配FacebookUser
,每个索引匹配TwitterUser
,并检查其中的预期节点
但我没有管理。
我目前的查询,工作,是:
@Query("start u=node(*) where has(u.__type__) and u.__type__ =~ '.*User' and has(u.id) and u.id = {0} return u")
这个翻译成:
检查图中的所有节点(我想,根本没有效率),然后保留那些以“用户”结尾的节点(包括 FacebookUser 和 TwitterUser)并检查正确的id
有没有办法在这种情况下只使用索引节点,而不是扫描整个图?
我正在考虑一种将_ type _属性重命名为父类的完整限定名的方法。
我们可以使用 SDN 轻松做到这一点吗?
实际上,由于 SDN 似乎使用与节点关联的 Java 类名称作为节点的索引名称,因此它只允许处理 Facebook 和 Twitter 子类型的一个索引节点:用户索引节点。