【发布时间】:2014-07-28 07:27:23
【问题描述】:
尝试在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标签
已编辑:
问题 1:
使用我以前的 SDN 版本(即 3.0.0.RELEASE),突然查询 user:User:_User 开始工作,但随后对于类似查询 song:Song:_Song 的 Song 存储库失败,但适用于 song:_Song 或 song:Song
问题 2:
当我更新我的 SDN 或 Neo4j 版本时,我得到了奇怪的异常,这就是我没有更新我的 SDN 和 Neo4j 版本的原因。
刚才我将我的 SDN 更新为版本 3.1.1 并保持 neo4j 版本相同(即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)
在线ApplicationContext appCtx = new AnnotationConfigApplicationContext(ApplicationConfig.class);
【问题讨论】: