Spring数据neo4j:没有主SDN标签存在..(即一个以_开头)

时间:2014-07-28 07:27:24

标签: neo4j spring-data-neo4j

尝试在UserRepository extends GraphRepository<User>上执行以下方法,但它正在抛出异常

@Query(
    "MERGE (user:User {appId:{0}, uid:{1}})" +
    "RETURN user"
)
public User createUserIfNotExists(String appId, String userId);

例外:

java.lang.IllegalStateException: No primary SDN label exists .. (i.e one with starting with _) 
at org.springframework.data.neo4j.support.typerepresentation.LabelBasedNodeTypeRepresentationStrategy.readAliasFrom(LabelBasedNodeTypeRepresentationStrategy.java:125)
at org.springframework.data.neo4j.support.typerepresentation.LabelBasedNodeTypeRepresentationStrategy.readAliasFrom(LabelBasedNodeTypeRepresentationStrategy.java:42)

但是将查询更改为"MERGE (user:_User可以正常工作,并将标签_User应用于创建的节点。

Q1。我是否可以告诉SDN仅附加User作为标签并避免_User
Q2。如果没有,那么我如何将User_User标签附加到所有用户节点。目前仅附加_User标签


编辑:

Issue1:

使用我以前的SDN版本(即3.0.0.RELEASE),突然查询user:User:_User开始工作但是Song存储库失败了类似查询song:Song:_Song但是适用于{{ 1}}或song:_Song

Issue2:

我更新SDN或Neo4j版本的那一刻,我得到了奇怪的例外,这就是为什么我没有更新我的SDN版本和Neo4j。

刚才我将SDN更新为版本song:Song并保持neo4j版本相同(即3.1.1)并且代码也相同但后来我得到了以下异常

2.0.1

在第Exception in thread "main" java.lang.IllegalArgumentException: Environment must not be null! at org.springframework.util.Assert.notNull(Assert.java:112) at org.springframework.data.repository.config.RepositoryConfigurationSourceSupport.<init>(RepositoryConfigurationSourceSupport.java:50) at org.springframework.data.repository.config.AnnotationRepositoryConfigurationSource.<init>(AnnotationRepositoryConfigurationSource.java:74) at org.springframework.data.repository.config.RepositoryBeanDefinitionRegistrarSupport.registerBeanDefinitions(RepositoryBeanDefinitionRegistrarSupport.java:74) at org.springframework.context.annotation.ConfigurationClassParser.processImport(ConfigurationClassParser.java:396) at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:207)

1 个答案:

答案 0 :(得分:3)

  

它需要带有下划线的标签来标识其中的标签   实际上属于这个类(在继承层次结构中)。

     

迈克尔

使用:

MERGE (user:User:_User {appId:{0}, uid:{1}})
RETURN user

MERGE (user:User {appId:{0}, uid:{1}})
ON CREATE SET user:_User
RETURN user