问题标签 [spring-data-graph]
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.
spring - 密码查询以获取具有给定属性值的节点
作为 Spring Data Graph 上的 Cypher 查询的新手,这可能很简单......
我正在寻找什么是 Cypher 查询来获取具有几个属性的给定值的所有节点。那么,???
@Query 注释中将包含以下内容:
编辑: 所以,我设法通过添加 Cypher 依赖项来使用派生查询(如下面的 Michael 所建议)。但我似乎收到以下错误:
string matching regex (?i)\Qreturn\E' expected but ,' found
我认为这是因为它似乎正在创建如下查询:
start n=node:__types__(className="com.example.MyObject") where n.property1 = {0}, n.property2 = {1} return n
而不是
start n=node:__types__(className="com.example.MyObject") where n.property1 = {0} and n.property2 = {1} return n
(注意查询中的,
而不是and
)
提前致谢。
spring - 如何在 Spring Data Graph 中保持 Neo4J NodeEntity 之间的关系而不调用 persist 两次
如果我删除第一个 persist(),下面的测试会失败。为什么我需要持久化 NodeEntity 才能实例化 Set?有没有更好的方法来做到这一点?我不想比必要时更频繁地写入数据库。
如果我删除提到的行,则会发生以下异常:
投掷
能力等级:
教育类
spring - 将 WrappingNeoServerBootstrapper 与 spring-data-neo4j 一起使用
是否可以WrappingNeoServerBootstrapper
与 spring-data-neo4j 一起使用?
当使用没有 spring-data-neo4j 的嵌入式数据库时,可以使用 aWrappingNeoServerBootstrapper
来启用 REST-interface 和 Webadmin。我使用 spring-data-neo4j 和一个嵌入式数据库(<neo4j:config storeDirectory="target/graph.db"/>
在 spring 上下文中)并且想使用 webadmin 和 rest-interface。
有没有办法做到这一点?
我还想知道 spring-data-neo4j-rest 是否处理事务?
spring - 在 SDG 2.0 中获取注释,获取策略问题
您好所有使用弹簧数据图的患者开发人员。由于文档太少而且测试覆盖率很低,有时很难理解底层框架的预期行为是什么,框架应该如何工作。目前我有一些与 SDG 1.1 中引入的新获取方法有关的问题。与 SDG 1.1 在 2.0 中写入\读取相反,只有用 @Fetch 注释注释的关系和相关对象被急切地获取,其他人应该被懒惰地获取..现在我的第一个问题:
- 是否可以配置 SDG,以便如果实体的加载和在惰性关系上调用 getter 发生在同一个事务中,请求的集合会自动获取?事务范围内的持久性上下文类型,或者可能计划用于功能发布。
- 如何为 @RelatedTo 注释一次获取惰性集合?Neo4jOperation 的 fetch() 方法只允许获取一个实体。我是否必须遍历整个列表并为每个对象获取实体?检查给定对象是否已获取/初始化的最佳方法是什么?
- 作为建议,我认为如果在使用未初始化的对象时会抛出某种延迟加载异常而不是获取 NPE,那会更直观。此外,该行为具有误导性,因为当对象未初始化并且除 id 之外的所有成员属性均为 null 时,equals 方法可以为尚未初始化的不同对象提供 true,考虑到例如集合的应用,这是一个非常严重的问题
我在使用 SDG 2.0.0.RC1 时注意到的另一个问题如下:当我将新对象添加到未获取的集合时,有时会正确添加并保留,但有时不会。我为这种情况编写了测试,它以非确定性的方式工作。有时失败有时以成功告终。这是用例:
/li>
此测试有时会在最后一个断言上失败,这意味着有时成员会添加到集合中,有时不会。我想问题出在 ManagedFieldAccessorSet 的某个地方,但很难说,因为这是不确定的。我用 mvn2 和 mvn3 用 java 1.6_22 和 1.6_27 运行测试,我总是得到相同的结果:有时是好的,有时测试失败。User equals 的实现如下:
- 我发现使用@Fetch java HashSet 注释的对象也有点问题,它是可序列化的,而对于延迟加载的字段使用 ManagedFieldAccessorSet,它是不可序列化的并导致不可序列化异常。
欢迎任何帮助或建议。提前致谢!
java - 如何从(spring-data-)neo4j 数据库中检索所有关系?
有没有办法从 spring-data-neo4j [SDN] 数据库中简单地检索某种类型的所有关系 - 其中类型是带@RelationshipEntity
注释的类?(使用 2.0.0.RC1 和嵌入式数据库)
当我尝试 SDN 提供的方法时:
它给了我以下错误:
org.neo4j.graphdb.NotFoundException: __type__ property not found for RelationshipImpl #9672 of type 7 between Node[4844] and Node[4875].
完整的堆栈跟踪:http: //pastebin.com/j2gqcjxh(虽然看起来
一种解决方案是使用低级(neo4j)API(即GraphDatabaseService
)检索所有节点,然后为每个节点检索它们的所有关系并验证它们的__type__
字段是否与我感兴趣的关系类型匹配。但是为什么要提供findAll
关系的方法?
简单的解释是建议的接口对于节点和关系是相同的 - 但是是否有任何文档说我们不允许使用findAll
关系?
或者:检查数据库中的关系实体,它与异常相矛盾,因为类型已按预期正确定义,并且一旦检索到节点并调用,就可以通过高级(SDN)API 检索关系getRelationship*(..)
另一方面:有人知道ImpermanentDataGraph
服务是否会包含在 v 2+ 中吗?
spring - 使用 Spring Data Neo4j 的简单对象/图形映射获取事务的正确方法?
我在 Spring Data Neo4j 2.0 中使用简单的对象/图形映射,我使用 Spring Data 存储库框架执行持久性操作。我正在使用存储库而不是使用 Neo4jTemplate。我将存储库注入到我的 Spring Web MVC 控制器中,控制器直接调用存储库。(没有中间服务层——我的操作通常是 CRUD 和查找器查询。)
当我进行读取操作时,没有问题。但是当我写操作时,我得到“NotInTransactionException”。我的理解是 Neo4j 中的读取操作不需要事务,但写入操作需要。
假设我想坚持使用简单的 OGM,那么在这里将交易纳入图片的最佳方式是什么?我想使用@Transactional,但把它放在各种存储库接口上是行不通的。如果我在控制器和存储库之间引入一个中间服务层,然后用 @Transactional 注释服务 bean,那么它可以工作,但我想知道是否有更简单的方法来做到这一点。如果没有 Spring Data,我通常可以访问 DAO(存储库)实现,因此如果我想避免传递服务层,我可以使用 @Transactional 注释具体的 DAO。使用 Spring Data,存储库是动态生成的,因此这似乎不是一个选项。
neo4j - Neo4j/Spring-Data 中的延迟/急切加载/获取
我有一个简单的设置,但遇到了一个令人费解的(至少对我而言)问题:
我有三个彼此相关的pojo:
所以你有一个带有“currentunit”的用户工作单元,它在用户中标记,允许直接跳转到“当前单元”。每个用户可以有多个worker,但是一个worker只分配给一个unit(一个unit可以有多个worker)。
我想知道的是如何控制“User.worker”上的@Fetch注释。我实际上希望仅在需要时才加载它,因为大多数时候我只与“工人”一起工作。
我浏览了http://static.springsource.org/spring-data/data-neo4j/docs/2.0.0.RELEASE/reference/html/对我来说不是很清楚:
- worker 是可迭代的,因为它应该是只读的(传入关系) - 在文档中明确说明了这一点,但在示例中,大多数时间都使用“Set”。为什么?或者没关系...
- 如何让工作人员仅在访问时加载?(懒加载)
- 为什么我甚至需要用@Fetch 注释简单的关系(worker.unit)。没有更好的方法吗?我有另一个具有许多如此简单关系的实体——我真的想避免仅仅因为我想要一个对象的属性而不得不加载整个图表。
- 我是否缺少弹簧配置,因此它适用于延迟加载?
- 有没有办法通过额外的调用加载任何关系(未标记为@Fetch)?
从我的看法来看,只要我想要一个 Worker,这个构造就会加载整个数据库,即使我大部分时间都不关心用户。
我发现的唯一解决方法是使用存储库并在需要时手动加载实体。
- - - - 更新 - - - -
我一直在使用 neo4j 很长一段时间,并找到了一个不需要一直调用 fetch 的上述问题的解决方案(因此不会加载整个图表)。唯一的缺点:它是运行时方面:
您只需要调整应该应用方面的类路径:my.model.package。.get ())")
我将方面应用于我的模型类上的所有 get 方法。这需要一些先决条件:
- 你必须在你的模型类中使用getter(方面不适用于公共属性——无论如何你都不应该使用)
- 所有模型类都在同一个包中(因此您需要稍微调整代码)-我想您可以调整过滤器
- 需要将 aspectj 作为运行时组件(使用 tomcat 时有点棘手) - 但它可以工作:)
所有模型类都必须实现 BaseObject 接口,该接口提供:
公共接口 BaseObject { 公共布尔 isFetched(); }
这可以防止双重获取。我只是检查强制的子类或属性(即名称或除 nodeId 之外的其他内容)以查看它是否实际被获取。Neo4j 将创建一个对象,但仅填充 nodeId 并保持其他所有内容不变(因此其他所有内容均为 NULL)。
IE
如果有人找到了一种没有那种奇怪解决方法的方法,请添加您的解决方案:) 因为这个可行,但我会喜欢没有 aspectj 的解决方案。
不需要自定义字段检查的基础对象设计
一种优化是创建一个基类而不是一个实际使用布尔字段(加载布尔值)并检查它的接口(因此您不必担心手动检查)
这是有效的,因为在保存对象“true”时返回加载。当方面查看它使用 isFetched() 的对象时 - 当尚未检索到对象时将返回 null。一旦检索到对象,就会调用 setLoaded 并将加载的变量设置为 true。
如何防止杰克逊触发延迟加载?
(作为评论中问题的答案 - 请注意,我还没有尝试过,因为我没有这个问题)。
对于杰克逊,我建议使用自定义序列化程序(参见http://www.baeldung.com/jackson-custom-serialization)。这允许您在获取值之前检查实体。您只需检查它是否已被提取,然后继续整个序列化或仅使用 id:
弹簧配置
这是我使用的示例 Spring 配置 - 您需要将包调整为您的项目:
AOP 配置
这是 /META-INF/aop.xml 使它工作:
data-modeling - 查找数据模型在线工具...从图片中
我阅读了 Spring Data Neo4j 的文档,发现了这样的图片:
这真的很有趣,我也想使用它!你知道生成它的网站是什么吗?我知道它适用于某些脚本语言,但花了几个小时后我没有找到它:(
java - 无法构建 spring-data-graph hello-worlds 示例
我是 maven 的新手,也是 spring-data-neo4j 的新手。我已经下载了这个hello-worlds-example
我尝试使用以下命令执行通过 maven 描述的示例:
我变成了很多错误。即使理解了问题,我也找不到解决问题的方法。
我的 Maven 安装正确:
谢谢你的帮助。
编辑(与 jdk1.6 相同):
和:
jakarta-ee - 不同关系实体的不同类型
我想用 Spring Data Neo4j 来表示这种类型的建模:
... whereObject
和Property
are NodeEntity
, whereValue
是 a RelationshipEntity
。
例如:
我知道我可以将所有这些属性直接放在汽车节点中。但我想在未来使用这种建模来进行图遍历优化。它看起来像这样:
问题是我不知道该value
属性必须使用哪种类型。Spring Data Neo4j 有没有可能做到这一点?
谢谢你。