Spring Data Neo4j - 找不到NodeImpl#0的'__type__'属性

时间:2013-06-06 05:17:52

标签: spring neo4j spring-data spring-data-neo4j

我试图在我的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 ”属性。

3 个答案:

答案 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();

希望这会对某人有所帮助。