标签: spring-data-neo4j

在接口/抽象类上使用@NodeEntity

是否可以在接口或抽象类或其字段上添加@NodeEntity(甚至@RelationshipEntity)注释?SpringData Neo4j如果没有,您如何处理这些情况?

neo4j spring-data spring-data-neo4j

2
推荐指数
1
解决办法
1713
查看次数

spring-data-neo4j 删除nodeEntity和所有引用的节点

我有一个简单的图形模型:1 UserN SocialUser

我想知道当我删除实体时是否有任何方法spring-data-neo4j可以自动删除所有引用的内容。SocialUserUser

这是我到目前为止所得到的:

领域:

@NodeEntity
public class User implements IdentifiableEntity<String> {

   @GraphId
   private Long nodeId;
   // ...

   @RelatedTo(type = "HAS", direction = Direction.OUTGOING)
   Set<SocialUser> socialUsers = new HashSet<>();
}

@NodeEntity
public class SocialUser implements BasicNodeEntity {

   @GraphId
   private Long nodeId;
   //...

   @RelatedTo(type = "HAS", direction = Direction.INCOMING)
   User user;
}
Run Code Online (Sandbox Code Playgroud)

数据

插入后

我尝试过的:

在这两种情况下,仅User删除:

在此输入图像描述

目前,我已将两个实体的删除封装在服务@Transactional的方法中User。像这样的东西:

   @Autowired
   Neo4jOperations template;

   @Transactional
   public …
Run Code Online (Sandbox Code Playgroud)

java neo4j cypher spring-data spring-data-neo4j

2
推荐指数
1
解决办法
1685
查看次数

在spring-data-neo4j-4中为继承的节点添加第二个标签

让我们有这个类结构:

@NodeEntity
abstract class BasicNodeEntity {
    @GraphId
    private Long nodeId;
    //...
}

abstract class IdentifiableEntity extends BasicNodeEntity {
    private String id;
    //...
}

abstract class Ad extends IdentifiableEntity {
    //... Ad attibutes
}

class OfferAd extends Ad {
    // ... OfferAd attibutes
}
Run Code Online (Sandbox Code Playgroud)

OfferAd通过a 保存节点Neo4jRepository,我希望节点有两个标签:OfferAdAd(继承).但是,标签Ad未添加到节点.

我知道我可以通过密码查询来保存节点,但是我想知道它是否可以通过代码Neo4jRepository来实现.

我已经回顾了这个问题(与SDN3相关),我认为它与我的用例非常接近,但它似乎无法正常工作......

任何帮助,将不胜感激.谢谢

java neo4j spring-data spring-data-neo4j spring-data-neo4j-4

2
推荐指数
1
解决办法
461
查看次数

Cypher:将属性从 int 转换为 String 的查询非常慢,并导致 Neo4j 服务器中出现 OutOfMemoryError

我需要将数字属性的类型迁移为字符串类型。为此,我编写了以下简单的查询:

MATCH (n:Entity) SET n.id=toString(n.id) RETURN n
Run Code Online (Sandbox Code Playgroud)

它匹配了大约 120 万个实体(根据 EXPLAIN),所以我没想到它会这么快。但5个多小时后仍未结束。与此同时,neo4j 服务器(社区,3.0.4)以接近 100% 的负载运行。

我在相应的 neo4j.conf 中进行了配置:

dbms.memory.heap.initial_size=4g
dbms.memory.heap.max_size=4g
dbms.jvm.additional=-XX:+UseG1GC
Run Code Online (Sandbox Code Playgroud)

仅运行几分钟后,我就可以在日志中看到有关 GarbageCollection 的报告:

[o.n.k.i.c.MonitorGc] GC Monitor: Application threads blocked for 277ms.
Run Code Online (Sandbox Code Playgroud)

后来情况变得更糟:

[o.n.k.i.c.MonitorGc] GC Monitor: Application threads blocked for 53899ms.
Run Code Online (Sandbox Code Playgroud)

最终出现了以下内容:

 [o.n.b.v.r.i.c.SessionWorker] Worker for session '10774fef-eed2-4593-9a20-732d9103e576' crashed: Java heap space Java heap space
java.lang.OutOfMemoryError: Java heap space
[o.n.b.v.r.i.c.SessionWorker] Fatal, worker for session '10774fef-eed2-4593-9a20-732d9103e576' crashed. Please contact your support representative if you are unable to resolve this. Java heap space java.lang.OutOfMemoryError: …
Run Code Online (Sandbox Code Playgroud)

neo4j cypher spring-data-neo4j spring-data-neo4j-4

2
推荐指数
1
解决办法
653
查看次数

索引集合弹簧数据neo4j

我正在试验/学习弹簧数据neo4j.我有一个非常简单的应用程序存储来自Twitter的推文.请参阅下面的代码段.

@NodeEntity
public class Tweet {

    @GraphId
    private Long id;

    private String tweet;

    @Indexed
    Set<String> hashtags;
Run Code Online (Sandbox Code Playgroud)

问题是,存储哈希标记的最佳方法是什么,以便我可以快速获取它们所属的推文?我能想到的是在Set上使用@Indexed或实际创建一个单独的Hashtag NodeEntity并在它和tweet之间建立关系.我无法找到一个NodeEntity索引集的任何文件,所以我不知道,如果设置的对象或设置每个字符串索引的创建索引.任何建议都会很好.谢谢.

neo4j spring-data-neo4j

1
推荐指数
1
解决办法
245
查看次数

在开始使用spring数据neo4j之前,我是否需要了解spring框架?

这是一个大学项目.教授告诉我们需要将neo4j用于图形数据库,由于POJO不能作为节点存储在neo4j中,我们也需要使用spring数据.听起来不错.当我真正编写代码时,我遇到的教程就是我的头脑.示例代码使用了注释,xml,bean和诸如此类的东西,而没有任何解释它们来自何处.我认为它们都是我没有经验的弹簧框架的一部分.那么在考虑春天neo4j之前我需要学习多少春天?我不能向我的教授寻求帮助,因为他是管理类型的人,他知道像技术这样的所有单词,但不知道它们是如何工作的.

spring neo4j spring-data-neo4j

1
推荐指数
1
解决办法
121
查看次数

Neo4jServer中的Neo4jServer - 4.1.0?

我一直在使用4.1.0-BUILD-SNAPSHOT中的最新代码,因为我需要4.1分支中的一些新bug修复,只是注意到"neo4jServer()"不再是Neo4jConfiguration公开的方法.初始化服务器连接和单元测试的内存中版本的新方法是什么?在我分别使用"RemoteServer"和"InProcessServer"之前.

spring-data-neo4j spring-data-neo4j-4

1
推荐指数
1
解决办法
1333
查看次数

Spring @Transactional和Neo4j OGM session.getTransaction()

Spring org.springframework.transaction.annotation.Transactional注释和Neo4j OGM org.neo4j.ogm.session.Session.getTransaction()方法之间的相关性是什么?

我正在尝试通过session.getTransaction()Spring注释的方法内部访问当前事务@Transactional但始终为null.

我在Spring MVC RestController方法中添加了以下代码:

Transaction tx = session.beginTransaction();
try {
        for (int i = 0; i < 10; i++) {
            initializeNode(node);
        }
    }
    tx.commit();
} catch (Throwable th) {
    logger.error("Error while inserting mock data", th);
    th.printStackTrace();
} finally {
    tx.close();
}
Run Code Online (Sandbox Code Playgroud)

在以下方法的情况下:

private void initializeNode(TestNode node) {
    System.out.println(session.getTransaction());
}
Run Code Online (Sandbox Code Playgroud)

它打印当前的tx - 到目前为止一切都还可以.

但是在以下方法的情况下:

private void initializeNode(TestNode node) {
    System.out.println(session.getTransaction());

    User admin = userDao.findByUsername("admin");
}
Run Code Online (Sandbox Code Playgroud)

第一次打印当前tx然后null ...事务在提交之前由于某种原因消失..

这是findByUsername方法:

@Service …
Run Code Online (Sandbox Code Playgroud)

neo4j spring-transactions spring-data-neo4j spring-data-neo4j-4 neo4j-ogm

1
推荐指数
1
解决办法
1030
查看次数

为什么在这个例子中neo4j的插入速度如此之低?

我想用最新的spring-data neo4j 4来测试插入速度.我修改了电影示例,使事情变得简单和可比.

尝试运行测试类:movies.spring.data.neo4j.repositories.PersonRepositoryTest.

在此示例中,添加400个节点需要5秒. https://github.com/fodon/neo4j-spring-data-speed-demo

这是使用旧版neo4j的速度测试 https://github.com/fodon/gs-accessing-data-neo4j-speed

对于同一个作业,hello.Application类比spring-data-neo4j-4快约40倍.

为什么spring-data-neo4j-4比旧版本慢?如何加快速度?

spring neo4j spring-data-neo4j

1
推荐指数
1
解决办法
552
查看次数

Neo4j顺序数据库事务问题

我有一个Spring Data Neo4j应用程序需要对Neo4j Community Edition(3.2)进行批量数据写入/读取.

我的系统配置(Macbook pro)16GB RAM,2.5 GHz Intel Core i7.

总节点:120,000.(每个节点有5个属性.)

我每个节点有500个关系.

上面的节点/关系是我需要的其他应用程序部分工作所需的初始数据的一部分.

我使用Spring Data Neo4j进行读/写事务.每个节点按顺序构建其对应的500个关系.显然,构建所有上述节点和关系需要花费大量时间.

示例代码:

实体:

//Neo4j entity class
import org.neo4j.ogm.annotation.GraphId;
import org.neo4j.ogm.annotation.NodeEntity;
import org.neo4j.ogm.annotation.Relationship;

@NodeEntity
public class SamplePojo {

@GraphId
    public Long id;
    private String property1;
    private String property2;
    private Integer property3;
    private Double property4;
    private Integer property5;

@Relationship(type="has_sample_relationship",direction="OUTGOING")
    List<SamplePojo> sampleList = new ArrayList<>();

//Getters and setters...

}
Run Code Online (Sandbox Code Playgroud)

库:

import org.springframework.data.neo4j.annotation.Query;
import org.springframework.data.neo4j.repository.GraphRepository;

@Repository
public interface SamplePojoRepository extends GraphRepository<SamplePojo> …
Run Code Online (Sandbox Code Playgroud)

neo4j spring-data-neo4j

1
推荐指数
1
解决办法
95
查看次数