问题标签 [neo4j-ogm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
neo4j - Spring Data Neo4j 覆盖属性
我尝试编写一个服务,具有update(User)
使用 SDN 4.0.0 的功能。该函数应该看起来,数据库中有一个具有相同 id 的用户,如果是,则用新用户覆盖该用户。
有一个UserRepository
扩展GraphRepository<User>
我写了以下代码:
我现在有一个问题,我更新的每个用户都保持它在数据库中的方式,因为从那一刻起,findOne(id)
用户对象的所有属性都会被用户覆盖,就像它在数据库中一样。
我已经解决了这个问题,existsById(Long id)
方法是在存储库中添加一个用 Query "Match (n:User) where ID(n)={0}"注释的函数。
但是,我仍然很感兴趣,为什么 SDN 会覆盖与我试图获取的对象具有相同 id 的对象。我假设涉及参考,但我真的看不出它的优点。
neo4j - Neo4j 和失去的关系
我对 neo4j 有一个非常奇怪的行为。有时,我现在无法重现该问题,两个节点之间的关系丢失了。
例如我有这些节点:
有时当我更改相同的用户属性时,“managed_by”关系会丢失。
我看不到问题......也许UserEntity中没有传入关系?总是需要吗?
谢谢!
更新
简化我修改实体的代码:
有时在调用更新控制器后,我有:
- 用户实体已修改
- 未修改工作实体(可能两次调用之间存在异常)
- managed_by 关系已删除!!!!
更新
几天后问题再次发生,现在我有更多日志
正如您从日志中看到的那样,在“flushing start node of ...”之后,关系“managed_by”被 neo4j 删除。
我希望这些日志可以帮助你找到一个解释!
更新
其他一些日志
保存实体时会出现此问题。实体(POJO)没有对WorkerEntity的引用,所以neo4j为什么说
什么是上下文初始化?
neo4j - 检索关系丰富的条目时,Spring Data Neo4j-4 性能非常慢
我目前正在使用 SpringDataNeo4j–4.1.0.M1 来处理包含大约 120 万个节点和 1200 万个关系的数据集。图背后的数据结构非常复杂和分层。总共有 79 个 NodeEntities,其中一些可以包含 20 多个 @Relationship 属性。
下面是层次结构的示例
我的域的一个例子
我的存储库示例
虽然对 Neo4j-Restful-Service 或 Remote-Web-Admin 的查询(对于具有许多关系的对象的特定查询)按预期执行(最大 10-100 毫秒),但使用 SDN 检索条目时查询性能急剧下降(100 - 500 毫秒)。这种性能下降仅在将查询深度设置为 1 时发生。如果查询深度为 0 并且不返回任何关系,则响应速度很快。使用 neo4j 本机 id 执行查询时,会创建索引并且响应时间不会改变。
对于其他用例(例如针对较小对象、@QueryResult 对象或对象集合的特定查询),SDN 表现良好。我的问题特定于检索具有许多关系的对象或具有增加深度(不止一个)的查询的查询。糟糕的性能是复杂的域层次结构和过于丰富的 NodeEntites 的结果,我是否需要减少层次结构以获得更好的性能?
谢谢你的帮助
java - 使用 neo4j-ogm 2.x (EmbeddedDriver) 配置嵌入式 Neo4j 集群
我正在使用 Spring-data-neo4j 4.1.0.RC1 和 neo4j-ogm-embedded-driver 2.0.1,我正在尝试在 HA 集群模式下配置我的嵌入式数据库(服务器 ID、初始主机、推送因子、. ..)。
有没有办法做到这一点?我无法通过 DriverConfiguration 类来做到这一点。
使用 Spring-data-neo4j 3.x,我能够在 HighAvailableGraphDatabaseFactory 的帮助下覆盖 Neo4jConfiguration.graphDatabase() 方法来配置我自己的 GraphDatabaseService。
谢谢 !
java - spring-data-neo4j 获取多条路径
我目前正在使用 spring-data-neo4j 来获取两个节点之间的路径。这是存储库:
但是,异常说只有 1 行是 expceted 但 2 found。
有关更多信息,如果我将代码更改为:
我可以得到一些未正确映射到域的响应GLNode
,例如id
缺少节点。
如果我只找到最短路径,例如,
然后一切正常。
那么,将neo4j查询的多个路径映射到java中的单个对象的正确方法是什么?
谢谢。
=============== 更新 ==============
我通过仅获取节点的 id 提出了一个临时解决方案,即
它仅在客户端知道所有图形时才有效。
===================== 更新2 ======================
预计只有 1 行,但实际上使用以下代码抛出了 2 个发现的异常:
这是异常详细信息:
neo4j - 为什么是 findOne(,) 添加更多相同标签的节点时,性能会变得无法接受吗?
语境
我一直在开发一个由 Neo4j 数据库支持的 Spring Boot 网站。它旨在用作大学课程搜索系统。(相关结构是课程具有模块集,具有模块,与学科相关等......)
对于课程页面,我需要填充课程的所有复杂字段,以便它们可以显示在页面上。我一直在T findOne(Long var1, int var2)
通过 GraphRepository 使用深度为 4 的 来获取综合课程对象。我担心我的知识这是一个非常罕见的深度。但是,在运行该方法时,它返回时没有任何明显的延迟。
问题 在做一些压力测试时,我将数据库中的课程数量增加到 4000,发现延迟成倍增加。向后工作深度 2 长达 20 秒,3 大约 60 秒,4 从未返回超过 5 分钟。尽管事实上所有 3 个之前都以毫秒为单位返回。
我发现这很奇怪,因为我正在构建单个课程节点(由长节点 ID 标识),因此课程数量的增加不应该以这种方式改变 findOne 方法的速度。它仍然会构建相同大小的对象。
测试
为了测试替代方案,我跑来MATCH (course:Course{courseCode:'HG65'})-[*1..4]->(x)RETURN *
查看需要多长时间(obv 这里的课程代码将查询限制为一个课程节点而不是节点 ID)。它立即返回了我想要的内容:
这让我认为这可能与结果映射到 GraphRepository 中的 POJO 有关。为了测试这一点,我创建了一些映射函数,用于获取 Neo4jOperation Result 对象并通过解析+迭代的方式实例化/填充我的 Course 对象结果图。从这个意义上说,我将模拟深度为 4 的 findOne。这运行没有延迟。我对此唯一的想法是 findOne 忽略了导致“course1 -> school -> course2”的关系方向,从而导致获取量大幅增加。虽然我现在不知道如何确认,也不知道如何绕过它。
问题
当我添加更多 Course 对象时,为什么 findOne(ID, 4) 运行如此缓慢?每次我想要获取复杂的 POJO 时,如何在不编写定制查询和结果映射器的情况下克服这个问题。
我应该采取其他方法吗?
java - Neo4j 野蝇 OGM 。在本地单元测试中工作正常,但在资源异常部署后失败
我的项目结构是
- 耳朵
- 服务器战争
- lib/persistence.jar
- META-INF/application.xml
我有neo4j-ogm
相关的代码persistence jar
。我的依赖是
我User
在包中有一个实体com.abcd.persistence.nodes
并且UserDAO
我正在尝试添加这样的用户
如果works fine
我在persistence.jar
. 但是当我尝试在部署后使用定义的 REST 服务访问时它失败了Server.war
堆栈跟踪是
和
如果我遗漏任何东西,请告诉我。
neo4j - 在 Neo4J 中,加载父节点正在加载 id=null 的重复子节点
以下是以A
(UserN) 和B
(UserRoleN) 作为对象的模型。
在数据库中,以下是图结构:
在加载 A 时,session.load(A.class, id, 1)
在 A Object 下总共加载了 2 个 B-Object,其中一个 B 的 ID 为空,另一个 B 对象 ID 是 neo4j 生成的。
无法理解为什么在数据库只有一个 B 对象的情况下会加载重复的 B。