我试图在我的java应用程序中使用spring数据来玩neo4j。目前我正面临一个奇怪的问题。以下是该方案。
I have:
1. Two UserNode, say A and B, where "UserNode" is java @NodeEntity class.
2. A @RelationshipEntity "RequestedTo" which i again a java class.
3. A relationship "A RequestedTo B" which i directed towards B.
现在,当我尝试获取所有具有指向B的RequestedTo关系的UserNode时,我得到以下异常
Caused by: org.neo4j.graphdb.NotFoundException: '__type__' property not found for NodeImpl#0.
at org.neo4j.kernel.impl.core.Primitive.newPropertyNotFoundException(Primitive.java:184)
at org.neo4j.kernel.impl.core.Primitive.getProperty(Primitive.java:179)
at org.neo4j.kernel.impl.core.NodeImpl.getProperty(NodeImpl.java:52)
at org.neo4j.kernel.impl.core.NodeProxy.getProperty(NodeProxy.java:155)
at org.springframework.data.neo4j.support.typerepresentation.AbstractIndexingTypeRepresentationStrategy.readAliasFrom(AbstractIndexingTypeRepresentationStrategy.java:106)
在这里,我使用Spring提供的GraphRepository接口对neo4j进行查询。
START user=node:searchByMemberID(memberID={0}) , member=node(*), root = node(0) MATCH user<-[r:RequestedTo]-member WHERE member <> root RETURN member
此外,当我在neoclipse中触发此查询时,我可以看到结果中的UserNode上没有“ type ”属性。但是当我在neo4j浏览器控制台中尝试此查询时,我可以看到结果集中的“ type ”属性。
答案 0 :(得分:1)
我只是玩了一下Neo4j,但试试这个:
START user=node:searchByMemberID(memberID={0}) , member=node(*)
MATCH user<-[r:RequestedTo]-member
WHERE id(member) <> 0
RETURN member
答案 1 :(得分:1)
您无需在member
中指定start
,cypher会自行处理。从单个或几个起点开始的所有本地查询都是图数据库的内容:
START user=node:searchByMemberID(memberID={0})
MATCH user<-[r:RequestedTo]-member
RETURN member
答案 2 :(得分:0)
我遇到与OP相同的错误:
'__type__' property not found for NodeImpl#0
并通过使用__type__
关键字检查has
属性的存在来解决此问题。
更明确地说,此请求引发了错误:
@Query(value = "start n=node(*) where not (n)-[:hasParent]->() return n")
Set<MyNodeType> findRootNodes();
但此请求有效:
@Query(value = "start n=node(*) where has(n.__type__) and not (n)-[:hasParent]->() return n")
Set<MyNodeType> findRootNodes();
希望这会对某人有所帮助。