问题标签 [spring-data-neo4j-5]

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.

0 投票
4 回答
1382 浏览

java - Neo4J 在微服务架构中

为了与 DDD 和限界上下文保持一致,众所周知,当您创建微服务时,您应该保持关注点分离。

Neo4J 的主要好处之一是将您的“连接”数据保存在 Neo4J 中,以便有效地查询它们之间的关系。

在选择使用 Neo4J 时,这两种对立的力量似乎使微服务架构决策变得困难。

您是否有多个微服务连接到 Neo4J 数据库并相应地保留自己的域?

或者

您是否有一个微服务与 Neo4J 的数据库连接来控制持久性和查询?

两者似乎都不太对...

0 投票
1 回答
135 浏览

neo4j - neo4j - 我们是否要跨多个微服务复制域实体以避免应用程序加入

我计划将现有服务从 mongodb 迁移到 neo4j graphdb 以实现持久性。我有使用 mongo 后端的配置文件和订单服务。我的订单域实体引用了 profileId,我使用应用程序代码根据 profileId 加入订单和配置文件。现在如果我选择neo4j,我想避免应用程序代码加入,而是使用neo4j的方式来做简单到复杂的加入要求。现在,问题是我将如何避免在设计中给定配置文件和订单位于 2 个不同的微服务中?当配置文件和订单存在于有界上下文中的 2 个微服务中时,我将如何有效地在 neo4j 中建模并定义它们之间的关系。我是否要复制配置文件和订单实体来定义关系。请帮忙。

例如,像下面这样的场景:

  1. 一些业务事务必须强制执行跨越多个服务的不变量。例如,下订单用例必须验证新订单不会超过客户的信用额度。其他业务事务,必须更新多个服务拥有的数据。

  2. 一些业务事务需要查询多个服务拥有的数据。例如,View Available Credit 使用必须查询 Customer 以找到 creditLimit 和 Orders 以计算未结订单的总金额。

  3. 某些查询必须连接由多个服务拥有的数据。例如,查找特定区域的客户及其最近的订单需要客户和订单之间的连接。

PS。引用自每服务数据库设计模式

0 投票
0 回答
315 浏览

java - SDN5:为 (14762)-[CONTAINS]->(14781) 找到多个匹配的 @RelationshipEntity,但无法确定使用哪一个

我创建了两个@RelationshipEntity具有相同类型的不同 Spring Data Neo4j 5:

一切正常,我成功地通过了所有测试,但现在我在控制台中不断收到以下错误:

我做错了什么以及如何解决?是否允许@RelationshipEntity相同类型的不同?

org.neo4j.ogm.context.GraphEntityMapper.getRelationshipEntity(Edge)我可以看到以下代码:

那只是打印错误日志,就是这样。从中真的很难理解 - 这是一个错误或否以及如何处理它。

课程:

0 投票
1 回答
624 浏览

neo4j - Spring Data Neo4j 5 更新动态属性

我有以下实体:

我添加了以下属性:

现在在数据库级别,我的Value节点具有两个属性:

现在,我想更新此Value节点的属性。为此,我创建了其他属性:

在数据库级别更新节点后,我具有以下属性:

如您所见,以下方法正确地使用 更新了属性,key1但没有删除使用key2.

如何正确更新动态属性以删除所有具有新properties2HashMap 中不存在的键的属性?

更新

正如下面的答案所建议的,我使用以下代码来重用 Value 节点中的相同属性:

但它仍然无法使用与以前相同的结果 - 它仍然不会通过删除的键从 Neo4j 节点中删除属性。我究竟做错了什么 ?

0 投票
0 回答
756 浏览

java - spring data neo4j 5 - 没有名为“sessionFactory”的bean可用

我正在使用带有文档https://github.com/spring-projects/spring-data-neo4j#quick-start的配置的 spring data neo4j (5.0.7.RELEASE) 和 spring (5.0.6.RELEASE)

当我尝试启动应用程序时,它失败并出现以下异常:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sharedSessionCreatorBean': Cannot resolve reference to bean 'sessionFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'sessionFactory' available at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:378) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:110) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:622) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:440) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1254) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1103) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:541) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:501) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:251) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1138) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1065) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:659) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:91) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:373) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1348) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:578) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:501) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:251) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1138) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1065) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:815) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:721) ~[spring-beans-5.0.6.RELEASE.jar:5.0.6.RELEASE] ... 60 more

任何想法为什么?

更新
配置类:

0 投票
1 回答
128 浏览

spring-boot - 当明确定义关系实体时,不要忘记更改您的模型?

在 sdn5 应用程序中使用下面的域类,我可以创建人员并将它们存储在 neo4j 中。从数据库的角度来看,一切都很好(存在节点和关系)。

但是当我尝试获取实体时,对于 NodeEntities 一切正常,但对于 RelationshipEntities 却失败了

如果我删除 RelationshipEntity 的显式声明......一切正常。我已经用java类测试过......同样的问题。

我究竟做错了什么?

提前致谢

Github Patrice中的完整测试用例

0 投票
1 回答
288 浏览

json - 使用 Spring Boot 和 Neo4j 通过 REST API 插入实体时出错

我正在使用 Spring Boot 测试 Neo4j,当我尝试使用 Rest API 插入元素时发现以下问题,我收到无法将 JSON 序列化为实体的错误。如果有人可以帮助我或解释如何更改我的代码或如何序列化该实体,我将非常感激。我的课程是......用户实体

地址实体

国家实体

抽象实体

我的商店用户的简单存储库类

我的服务类

我的控制器类

这是我尝试建模的简单方案(Neo4j 是一个 NoSQL 数据库,没有大纲,但我尝试建模一个简单的应用程序) 在此处输入图像描述

当它尝试测试 api rest 的方法时,它对我有用,但 Country 实体未序列化为 json。

我已经将数据插入到数据库中,我使用测试方法声明了对象并使用方法保存它。当我使用 json 格式时会出现问题。当我运行 curl 命令测试 Rest API 时,它不返回国家/地区

如您所见,国家将其作为空值返回,如果它存在于数据库中。

当我尝试使用 API 插入一个元素时,它感叹一个错误,即我无法将国家对象序列化为 JSON。

下一个错误是抛出我的那个

{"timestamp":"2018-09-27T21:07:56.365+0000","status":400,"error":"Bad Request","message":"JSON 解析错误:无法反序列com.syskayzen.hypercube.domain.Address化 START_ARRAY 的实例令牌;嵌套异常是 com.fasterxml.jackson.databind.exc.MismatchedInputException:无法com.syskayzen.hypercube.domain.Address在 [Source: (PushbackInputStream); line: 1, column: 122] 处反序列化 START_ARRAY token\n 之外的实例(通过引用链:com. syskayzen.hypercube.domain.User[\"addresses\"])","path":"/users"}

如果您能告诉我如何解决如何序列化国家实体的问题,或者是否是由于其他原因导致错误。

我正在使用 Spring Boot 2.0.5 和 Spring Data Neo4j