问题标签 [spring-data-neo4j]

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 投票
2 回答
759 浏览

java - DataRetrievalFailureException:在 Spring Data Neo4j 中未找到“__type__”

我有一个 Neo4j REST 数据库设置并运行,我试图使用 Spring Data Neo4j 访问它。以下代码:

抛出以下异常:

线程“main”中的异常 org.springframework.dao.DataRetrievalFailureException: '__type__' onhttp://my.ip.addr.ess:7474/db/data/node/1234;嵌套异常是 org.neo4j.graphdb.NotFoundException: '__type__' onhttp://my.ip.addr.ess:7474/db/data/node/1234

请注意,如果我导航到http://my.ip.addr.ess:7474/db/data/node/1234,我的对象会正确显示。

在我的 pom 我有org.springframework.data:spring-data-neo4j-rest:2.1.0.BUILD-SNAPSHOT

0 投票
1 回答
537 浏览

neo4j - Spring Data Neo4j 导入时很慢

有人可以向我解释为什么将实体导入 Neo4j 需要 6 到 10 秒吗?

我正在使用带有Neo4jTemplate @Autowire-d 的自定义存储库的 Spring Data Neo4j。因此,当我坚持一个实体时,我会调用template.save(entity). 我不得不说,虽然实体有点重。它有 47 个属性,即字段,其中 3 个用@Indexed注释标记,其中 10 个是用 标记的其他自定义实体@RelatedTo。其中 5 个@RelatedTo字段是 type Set。这意味着实际上在导入这个重实体时,另外 10-15 个实体也可能被持久化并连接到它。

这是实际的问题还是我可以做些什么来加快这个过程?

我环顾四周,找到了,BatchInserter但它不关心索引。我找到了这个示例实现,但如果没有其他选择,我会尝试它。

所以我想我想了解的是,如果沉重的实体是缓慢持续或其他原因的原因。

我正在使用 Neo4j 1.8 并没有触及配置文件。

任何帮助表示赞赏。谢谢。

编辑
@Michael Hunger:
- 数据库中的数据量似乎没有影响。
- 我没有使用 AspectJ,所以我想我使用的是简单映射,对吧?你认为我会用 AspectJ 获得更好的性能吗?
- 我认为我没有跨越该save方法的外部事务。我正在使用 Wicket Web 应用程序中的数据库。如果我将 Neo4j 的 REST API 与Jersey REST 客户端一起使用会更好吗?
- 如果自定义类型的类中有一个属性,例如Area area,那么将为此自动创建另一个节点area以及主节点和 之间的连接area,对吗?所以没有必要template.createRelationshipBetween(entity1, entity2, type, properties, true),对吧?要使用它,我必须做的是删除area属性,然后使用一些索引找到正确的area,然后手动建立连接。这是你的意思吗?

这就是我的保存方法的样子:

这是如何定义实体的示例(忽略 @ExcelCell 注释)。通常有一个抽象类被持久化实体扩展。如果我做错了什么,请告诉我。

这是扩展抽象 Building 类并保留在 DB 中的 NewBuilding 类。

0 投票
1 回答
664 浏览

casting - Neo4j:spring-data-neo4j,如何将结果转换为我的类型类?

我已经将一些节点插入到 Neo4j DB 中。我想从数据库中选择一些节点并将其转换为特定的类。

以下是有关该问题的一些代码:

有关节点的详细信息,例如:

我只想从数据库中获取节点的 ID、名称、年龄并将其放入 User 类中。但它用很多方法失败了很多次。

在这里我遇到了一个问题:如何将结果转换为我的目标类?我尝试了很多方法来投射,但最终失败了。谢谢你的关注。

0 投票
1 回答
97 浏览

lazy-loading - How to configure not loading node relations even partly?

I am using Spring data Neo4j project while my nodes contains relations properties using @RelatedTo , @RelatedToVia annotations, I don't want any of them to be fetched eagerly so these properties ain't marked with @Fetch annotations.

When node is fetched all his other relations are partly fetched ( each fetched related node only with id the rest of the properties are null) this happens in nested way also for the relations of the relations.

There is way to prevent this overhead? using include/exclude fields like in spring data mongo db?

Thanks

0 投票
1 回答
379 浏览

neo4j - 如果远程数据库关闭,Neo4j graphDatabaseService 会在上下文初始化时爆炸

当 Neo4j 配置被初始化,并且远程数据库没有运行时,服务器将不会启动......

当服务器没有运行时,有没有办法优雅地停止或停止它的创建?

这是一个更大的应用程序中的一个模块,我无法启动应用程序 b/c Neo4j 已停止运行..

0 投票
1 回答
1030 浏览

java - 用于事务的 neo4j 锁

我刚刚开始使用 neo4j 来评估它是否会成为推荐引擎的良好基础数据库。我想知道是否有关于在读写操作期间在实体上获得的锁的任何文档。

例如,如果节点 N 分别通过关系 R1 和 R2 与节点 N1 和 N2 相关,如果正在创建或修改关系 R1,那么任何使用 N、N1、N2 或 R2 的操作(可能是关系创建/修改或遍历)都会遇到一块?直觉上,我猜不会,因为只有 R1 被写入,这是唯一应该被锁定的实体。但是,我想这也取决于底层实现,特别是因为为每个关系都提供了双向遍历(也许 N 和 N1 会被锁定?)。如果有人可以向我指出一些有关此的官方文档,那就太好了。

如果确实发生了这种锁定,我能想到的解决问题的一种方法是将每个节点解析为每个关系目的的子节点,每个节点都连接到根实体。(比如用户社交用户,用户产品用户等)

我想这将允许每个节点的关系数量减少,将根节点解析为写入繁重和读取繁重的子节点,并允许快速检索某些子图。我能看到的唯一缺点是节点和关系的总数增加了 n 倍(我的数据库大小相对较小,n=4,所以我对此没有问题)。任何关于这些结论是否正确的输入,如果是,如果它们有助于提高性能和减少锁的数量,将不胜感激。

0 投票
1 回答
501 浏览

spring - spring-data neo4j:无法通过相关实体找到节点实体

使用 spring-data neo4j,我有 2 个节点实体:snippet 和 person。每个片段都有一个作者。以下是类,然后是失败的测试:

.

.

.

0 投票
1 回答
1675 浏览

spring - Spring Data Neo4j:对象到字符串的转换器工作,但对象到长的没有执行

从域对象转换为那些 Neo4j 可以本地存储为属性值的问题,我遇到了一个非常奇怪的问题。作为测试用例,我使用 Joda 的 DateTime。这种类型的对象可以很容易地转换为 String 或 Long。

从 DateTime 到 String 的转换可以完美地使用以下代码:

该属性显示在节点中:

但是,如果我想将 DateTime 保存为 Long(用于在 Cypher 中按时间排序),它根本不起作用。这是我的转换器:

该属性未保存在节点上。因此它完全丢失了。不会抛出异常。似乎根本没有调用转换代码。

转换器使用基于代码的配置连接到 Spring Data:

有什么线索吗?我在这里很迷茫,因为我认为它应该可以工作......

编辑我在Spring Data Neo4j 文档 中找到了以下文本:

使用 Spring 转换服务可转换为字符串的所有字段都将存储为字符串。

这是否意味着只支持转换为字符串?这似乎相当有限。

0 投票
0 回答
112 浏览

spring - Parametrized BeforeSaveEvent is triggered for every registered listener irrespective of T

I'm trying to generate unique incremented ids for entities. For that purpose I have registered multiple ApplicationListeners for every entity type as:

definitions are like:

As seen, BeforeSaveEvent is parametrized with Customer type. But the thing is, when a save event is about to happen for customer, other listeners are also triggered although tese listeners' BeforeSaveEvent is parametrized with different types, such as Employee or Message (while inheriting from the same Entity parent class)

Is this to be expected? And what should be my approach to this problem? First thing coming to mind is to use only one listener and differentiate inside with instanceOf ifs but this seems very ugly.

I'm using neo4j 1.9.M03, spring-data-neo4j 2.1.0.RC4 and spring 3.1.3

0 投票
1 回答
1097 浏览

social-networking - 用于社交 RESTful 层的 Neo4j Spring 数据 POC

开始着手一个新项目...为社交网络平台提供服务的RESTful层。
Neo4j是我主要数据存储的明显选择,我之前有机会使用Neo,但没有利用Spring Data将POJO映射到节点的能力,这似乎很方便。

目标:

  1. 该层应该提供类似于Facebook Graph API的支持,它为每个实体/对象定义相关的属性和连接,可以从 URL 引用。
    FB 图形 API

  2. 如果可能的话,我想避免传输将被序列化到域实体/从域实体传输的对象,并将我的域 pojo 用作传输到/从客户端传输的 JSON。

例子:

  • HTTP GET /profile/{id}/?fields=...&connections=...响应将是Profile对象,其中包含请求的 URL。

  • HTTP GET /profile/{id}/stories/?fields=..&connections=...&page=..&sort=...响应将是根据请求的Story对象列表。

相关版本:

  • Spring 框架3.1.2
  • Spring Data Neo4j 2.1.0.RC3
  • Spring Data MongoDB 1.1.0.RC1
  • 方面J 1.6.12
  • 杰克逊1.8.5

为了简单起见,我们有ProfileStory节点和它们之间的Role关系。


配置文件节点


故事节点


角色关系


起初我没有使用AspectJ支持,但我发现它对我的用例非常有用,因为它在 POJO 和实际节点之间生成分隔线,因此我可以根据请求和域驱动轻松请求属性/连接设计方法看起来很不错。

问题 1 - AspectJ:

假设我想为一个对象定义默认字段,无论是否在 URL 中请求,这些字段都将返回给客户端......所以我在这些字段上尝试了 @FETCH注释,但它似乎在使用时不起作用方面J。目前我是这样做的。。

这是实现这一目标的正确方法吗?即使使用AspectJ也应该支持@FETCH注释吗?我将很高兴获得有关 AspectJ + Neo4j 的示例/博客几乎没有找到任何东西....

问题 2 - 分页:

例如,我想在请求特定连接时支持分页

/profile/{id}/stories/,如果故事相关如下


/profile/{id}/stories/,如果故事相关如下

分页是否支持开箱即用@Query || @RelatedTo || @RelatedToVia使用Pageable接口来检索Page而不是 Set/List/Iterable?限制和排序应该是动态的,具体取决于客户端的请求……我可以使用Cypher Query DSL来实现,但更喜欢使用基本的……其他方法将被愉快地接受。

问题 3 - 带有 {self} 的 @Query:

有点愚蠢的问题,但我无能为力:),似乎在节点实体中使用 @Query 时(使用 {self} 参数},返回类型必须是 Iterable 这很有意义..让我们举个例子...... .

当请求发布连接时:

有解决方法吗?这不会创建另一个属性,它将是 Profile 中的 @Transiant ..

问题 4 - 递归关系:

我在传递/递归关系方面遇到了一些问题,在 Story 中分配新的 Profile 角色时,关系实体角色包含@EndNode story ,其中包含角色连接......其中之一是上面的上下文角色,它永远不会结束:) ...有没有办法配置弹簧数据引擎不创建这些永无止境的关系?

问题 5 - 交易:

也许我之前应该提到过,但我正在为 Neo4j DB 使用 REST 服务器,从之前的阅读中我了解到事务中不支持开箱即用?就像使用嵌入式服务器时一样,我有以下代码......

使用 REST 服务器时,这会在事务中运行吗?这里的操作很少,如果一个失败全部失败?

问题 6 - Mongo + Neo4j:

我需要存储不具有关系性质的数据.. 例如提要、评论、按摩。
我考虑过与MongoDB集成来存储这些.. 我可以将域 pojo 字段/连接拆分到具有跨存储支持的 mongo/neo4j 吗?它会支持 AspectJ 吗?


现在就是这样......欢迎对我上面提出的任何方法发表任何评论......谢谢。