【发布时间】:2018-03-16 07:01:29
【问题描述】:
我正在尝试从 SDN 4.2 迁移到 SDN 5 和 OGM 3
除了一种情况外,几乎所有东西都完美无缺。
现在为了保存实体,我必须使用 depth=2 而不是像 SDN 4.2 中那样的 depth=1
那里很难解释,所以我在 GitHub 上创建了一个演示项目来重现这个问题 - https://github.com/Artgit/spring-boot-2.0.0.M4-sdn5-ogm3-saving-issue
重现步骤:
如果您想使用自己的 Neo4j 实例,请跳过第 1 步并从第 2 步开始阅读。
运行
mvn docker:start -Dfile.encoding=UTF-8以在 Docker 容器中启动 Neo4j 3.2.5(必须安装 Docker)执行测试
com.decisionwanted.domain.DecisionCharacteristicIT.testUpdateValue()
测试应该因断言而失败:
java.lang.AssertionError: expected:<BaseEntity [id=3, class=class com.decisionwanted.domain.model.user.User, createDate=Wed Oct 04 21:54:17 EEST 2017, updateDate=Wed Oct 04 21:54:17 EEST 2017]> but was:<BaseEntity [id=2, class=class com.decisionwanted.domain.model.user.User, createDate=Wed
从下面的代码可以看出:
rdbmsHorScalingValue = valueDao.update(rdbmsHorScalingValue, newStringValue2, newStringDescription2, user3,
null);
assertEquals(user3, rdbmsHorScalingValue.getUpdateUser());
rdbmsHorScalingValue = valueDao.getById(rdbmsHorScalingValue.getId());
assertEquals(user3, rdbmsHorScalingValue.getUpdateUser()); // Error here !!!!
我已经用 user3 更新了rdbmsHorScalingValue,在通过 id 获得Value 之后(valueDao.getById()) 我希望这个用户是rdbmsHorScalingValue.getUpdateUser(),但由于某些未知原因,这不是真的。
但如果我们更改以下方法:com.decisionwanted.domain.dao.decision.characteristic.value.history.HistoryValueDaoImpl.create(Value) 将深度从 1 保存到 2 - 一切都开始正常工作。
现在我不知道问题出在哪里,我唯一知道的是 - 使用 SDN 4.2 保存深度 = 1 时效果很好。
请告诉我问题出在哪里(为什么它不适用于 SDN 5)以及如何解决它。
【问题讨论】:
标签: neo4j spring-data-neo4j spring-data-neo4j-4 neo4j-ogm spring-data-neo4j-5