java - Neo4j OGM 图覆盖事务内的更改

标签 java neo4j spring-data-neo4j spring-data-neo4j-4 neo4j-ogm

我们觉得我们终于对 Neo4j-ogm 中看到的奇怪行为有了解释。我们最初认为这与 equals/hashcode 实现有关,但事实并非如此。

似乎 ogm 保留了图的缓存副本,并且在事务内所有检索都指向同一内存对象。

我们创建了一个单元测试来演示该行为(下面是一些不起作用的伪代码)

//all within the same transactional


//retrieve an object from the database

NodeObject no1 = repository.loadObject();


//update some values on the object

no1.setValue("whatever");


//retrieve the same database object into a new java object

NodeObject no2 = repository.loadObject();


//at this point no2 and no1 are the same java object, and any value changes to no1 have been reverted to no2, as is in the database.

这对我们来说似乎是一个问题。

我们之前已经观察到了这一点,并通过更改检索到的对象的深度来消除它(以防止它们的图形恢复内存中的内容),但是当它不使用我们的密码查询时,它的可定制性较差。

请告诉我们如何避免此问题!

最佳答案

您可以在 bean 配置或 session 配置中配置该“缓存”的范围,如果应该通过请求、http session 或应用程序范围(永远)进行配置。

参见:http://docs.spring.io/spring-data/neo4j/docs/4.0.0.RELEASE/reference/html/#_session_bean

关于java - Neo4j OGM 图覆盖事务内的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32994379/

相关文章:

java - 在eclipse中运行时找不到类异常

php - Neo4j PHP Graphaware '400 Bad Content-Type header' 错误

java - Neo4J TraversalDescription 定义

grails - Spring Data Neo4j 和 Grails 3

java - 为 Spring Data Neo4j 创建动态查询

java - 如何使用 Spring Data JPA + Neo4j 正确设置跨商店持久性?

java - 文件重命名失败

java - 如果任何 EditText 为空,如何禁用按钮?

java - 将时间字符串解析为日历时出错

java - 使用 Java API 的 Neo4j Cypher Query 1.9.6 问题