赞
踩
我在本地测试,下载了neo4j-desktop图数据库可视化工具,下载地址:https://neo4j.com/download/https://neo4j.com/download/
使用springboot集成neo4j,导入spring-boot-starter-data-neo4j依赖或者spring-data-neo4j
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-data-neo4j</artifactId>
- <version>3.2.2</version>
- </dependency>
- <!--要使用neo4j的注解还需要导入这个依赖-->
- <dependency>
- <groupId>org.neo4j</groupId>
- <artifactId>neo4j-ogm-core</artifactId>
- <version>3.2.16</version>
- </dependency>
这俩的neo4j版本都是5.15.0,所以jdk需要17,上一篇文章中提到过,jdk8版本需要4以下的版本,但是neo4j-desktop没有4以下的版本,配置文件
- spring:
- neo4j:
- uri: bolt://localhost:7687
- authentication:
- username: neo4j
- password: 12345678
- encryption:
- enabled: false
结合上一篇中提到的,这一章将记录在springboot中使用CQL的节点,属性,关系等
- import org.neo4j.ogm.annotation.NodeEntity;
-
- @NodeEntity
- public class Person {
- // 类的属性
- }
- @NodeEntity("Person")
- @Data
- public class Person {//节点类
- @Id
- private Long id;
- @Property
- private String name;
- @Relationship(type = "FRIEND")//@relationship不能修饰实体类
- private List<FriendOf> friends = new ArrayList<>();
- // 省略构造函数、getter和setter
- }
-
- @RelationshipProperties
- public class FriendOf {//关系实体
- @Id
- private Long id;
- @Property
- private String type; // 关系类型
- @Property
- private String since; // 友谊建立时间
- @StartNode
- private Person person1;
- @EndNode
- private Person person2;
- // 可选:定义关系的属性
- }
-
- @RelationshipProperties
- public class FriendOf {//关系实体
- @Id
- private Long id;
- @Property
- private String type; // 关系类型
- @Property
- private String since; // 友谊建立时间
- }
-
- @RelationshipProperties
- public class FriendOf {
- private String type; // 关系类型
- private String since; // 友谊建立时间
- @Relationship(type = "FRIEND",direction = Relationship.INCOMING)
- private Person person1;
- @Relationship(type = "FRIEND",direction = Relationship.OUTGOING)
- private Person person2;
- }
关于关系实体类中的@StartNode和@EndNode的使用,以及@RelationShip可以替换@StartNode和@EndNode,什么时候关系实体类中需要添加开始节点和结束节点的说明:
不加开始节点和结束节点:
当关系实体类不需要包含开始节点和结束节点时,通常适用于简单的关系,例如仅包含一个属性或几个属性的关系。在这种情况下,关系实体类仅用于表示关系本身的属性,而不需要关联到具体的节点。例如,如果我们只需要表示两个人之间的友谊关系,而不需要具体的开始节点和结束节点信息,则可以像之前提供的示例代码中一样,只定义关系实体类,而不包含开始节点和结束节点。
包含开始节点和结束节点:
当关系需要额外的属性或更复杂的结构时,您可能希望在关系实体类中包含开始节点和结束节点的信息。这种情况下,关系实体类不仅包含关系本身的属性,还包含关联到开始节点和结束节点的信息。这样做可以方便地通过关系实体类来获取相关节点的属性,并且在执行查询时可以更灵活地使用Cypher语句。通常,这种方式适用于需要更多关于关系的信息,或者需要在查询中同时访问节点和关系属性的情况。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。