上下文
用例
我在数据库中有一个现有的Person,它可以有多个可以使用多种语言的PersonTranslatedContent。 基本上,我的模型化就像:
(:Person)-[:TRANSLATION {lang:"fr}]->(:PersonTranslatedContent)
问题
当我创建一个PersonTranslatedContent节点和一个TRANSLATION关系以与我的Person链接时,' lang'财产不是持久的关系。
核心创建了节点,但是当我从Neo4j浏览器查询数据库时,我的关系只有一个属性:_type__ : PersonToPersonTranslatedContent
分析
当记录Neo4j收到的HTTP请求时,执行的请求按以下顺序进行:
1. MATCH (n) WHERE id(n) = {id_n} MATCH (m) WHERE id(m) = {id_m} CREATE (n)-[r:`TRANSLATION`]->(m) SET r={props} RETURN id(r) as id, type(r) as type, r as properties, id(startNode(r)) as start, id(endNode(r)) as end
2. START r=rel({id}) SET r.`_ _type_ _` = {value}
3. START r=rel({id}) RETURN id(r) as id, type(r) as type, r as properties, id(startNode(r)) as start, id(endNode(r)) as end
4. **START r=rel({id}) SET r.`lang` = {value}** <-- here the lang property seems to be correctly set !
5. START r=rel({id}) SET r = {props} <- here, props = {"_ _type_ _" : PersonToPersonTranslatedContent"}
所有这些REST调用都是在对personToPersonTranslatedContentRepository.save()的简单调用中完成的。我在调试模式下跟着白色rabit,这里是缩短的调用堆栈:
所以,在我看来,考虑到我所知道的以及我在调试过程中看到的内容,问题似乎是围绕&#34; propertyData&#34;在((UpdateableState)目标中使用的类RestEntity的属性).flush()!它始终保持值{&#34; _ 类型 _&#34; :PersonToPersonTranslatedContent&#34;}但从不包含我的&#34; lang&#34;属性。
注意:我的问题与此处3.3.0.M1 : Properties on RelationShipEntity not saved when using CypherRestGraphDatabase?解释的问题相同。他的帖子没有令人满意的答案。
你能帮助我(我猜他)吗?
Thx:)
13/07/15:更新
我终于通过使用以下方法解决了我的问题:
Map<String, Object> properties = new HashMap<>();
properties.put("lang", lang);
properties.put("__type__", "UserToUserTranslatedContent");
neo4jOperations.createRelationshipBetween(neo4jOperations.getNode(user.getId()), neo4jOperations.getNode(translatedContent.getId()), RelationNames.TRANSLATION, properties);
但是简单的save()操作不能按预期工作仍然很奇怪
答案 0 :(得分:0)
对于寻找解决方案的人,我做了一个关于这个问题的报告(https://jira.spring.io/browse/DATAGRAPH-699),并像以前一样快速使用SDN(&lt; 3.3.x)这样做:
从build.gradle中删除“spring-data-neo4j”和“spring-data-neo4j-rest”并添加以下行:
repositories {
maven {
url "https://jitpack.io"
}
}
dependencies {
compile 'org.springframework:spring-orm:4.1.7.RELEASE'
compile 'org.springframework:spring-aspects:4.1.7.RELEASE'
compile 'com.github.nousmotards:spring-data-neo4j:3.3.1.NM1'
}
希望这将有助于实现真正的修复;)