3

我正在尝试借助我的 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 ”属性。

4

3 回答 3

1

我只是用 Neo4j 玩了一点,但试试这个:

START user=node:searchByMemberID(memberID={0}) , member=node(*)
MATCH user<-[r:RequestedTo]-member 
WHERE id(member) <> 0 
RETURN member
于 2013-06-06T07:01:55.980 回答
1

您无需指定memberin start,cypher 会自行处理。毕竟,来自单个或几个起点的所有本地查询是图形数据库的意义所在:

START user=node:searchByMemberID(memberID={0})
MATCH user<-[r:RequestedTo]-member 
RETURN member
于 2013-06-06T21:03:53.547 回答
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();

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

于 2013-12-19T08:57:09.437 回答