尝试在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)
行
答案 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