本博客适用于springboo data neo4j 7.2.6版本,详情阅读官网https://docs.spring.io/spring-data/neo4j/reference/7.2/introduction-and-preface/index.html,中文网只更新到了6版本

entity->node entity->relation

@Node("Movie")  // 取代了老版本的nodeentity,他表示的就是label
public class MovieEntity { @Id // id标识没什么好说的,官方也提供了自动生成@GeneratedValue
private final String title; @Property("tagline") // 代表一个label的属性
private final String description; @Relationship(type = "ACTED_IN", direction = Direction.INCOMING) // 关系的创建直接在entity里即可,本样例中就是(MovieEntity)-[ACTED_IN]->(Roles)。向后阅读,这里是一个复合关系吗,用到了@RelationshipProperties
private List<Roles> actorsAndRoles; @Relationship(type = "DIRECTED", direction = Direction.INCOMING) // 本样例是(MovieEntity)-[DIRECTED]->(PersonEntity)
private List<PersonEntity> directors = new ArrayList<>(); public MovieEntity(String title, String description) { // 需要构造函数
this.title = title;
this.description = description;
} // Getters omitted for brevity
}

一些映射注解

    @Node:表示类对数据库的映射
@Id:
@GeneratedValue:与 @Id一起应用,以指定应如何生成唯一标识符
@Property:类属性对node属性的映射
@Relationship:类属性对relation的映射,这个用在类内,指明(node)-[relation]->(node)
@RelationshipProperties:类对relation的映射,这个用在类外,指明relation具体有什么属性  
@TargetNode:用于 @RelationshipProperties注解的类的字段,以从另一端的角度标记该关系的目标

@Relationship:type/value为允许配置关系的类型,direction指定了方向,默认为OUTGOING

@RelationshipProperties使用案例:

@RelationshipProperties
public class Roles { @RelationshipId
private Long id; private final List<String> roles; @TargetNode
private final PersonEntity person; public Roles(PersonEntity person, List<String> roles) {
this.person = person;
this.roles = roles;
} public List<String> getRoles() {
return roles;
}
}

示例(可选使用)基于neo4jclient的生成器

@Component
class MyIdGenerator implements IdGenerator<String> {
private final Neo4jClient neo4jClient;
public MyIdGenerator(Neo4jClient neo4jClient) {
this.neo4jClient = neo4jClient;
}
@Override
public String generateId(String primaryLabel, Object entity) {
return neo4jClient.query("YOUR CYPHER QUERY FOR THE NEXT ID") //(1)
.fetchAs(String.class).one().get();
}
}
@Node("Movie")
public class MovieEntity {
@Id @GeneratedValue(generatorRef = "myIdGenerator")
private String id;
private String name;
}

如何创建一个dao

@Repository
public interface IndustryDao extends Neo4jRepository<Industry,Long> {
}

springboot3整合高版本spring data neo4j的更多相关文章

  1. 通过Spring Data Neo4J操作您的图形数据库

    在前面的一篇文章<图形数据库Neo4J简介>中,我们已经对其内部所使用的各种机制进行了简单地介绍.而在我们尝试对Neo4J进行大版本升级时,我发现网络上并没有任何成型的样例代码以及简介,而 ...

  2. Spring DATA Neo4J(一)

    Spring DATA Neo4J——简介 Spring Framework提供了一下模块来处理基于Java的应用程序的DAO层 Spring JDBC Spring ORM Spring DATA ...

  3. Spring整合Hibernate实现Spring Data JPA (简单使用)

    直接上代码: pom.xml <!-- hibernate start --> <!-- spring data jpa --> <dependency> < ...

  4. Spring整合Hibernate实现Spring Data JPA (介绍和使用)

    Spring Data JPA是Spring基于Hibernate开发的一个JPA框架.如果用过Hibernate或者MyBatis的话,就会知道对象关系映射(ORM)框架有多么方便. 但是Sprin ...

  5. 【原】低版本MyEclipse整合高版本Tomcat

    [使用工具] 1.MyEclipse_6.0.1GA_E3.3.1_FullStackInstaller 2.Tomcat 7.0 [问题描述] 直接在MyEclipse中整合,因为这个版本的MyEc ...

  6. EasyUI整合SpringBoot,Spring Data对数据的分页操作

    EasyUI的用法可以看中文官网,看插件是如何使用的 EasyUI中文官网 前端页面 <table id="dg" title="My Users" cl ...

  7. SpringBoot第九篇:整合Spring Data JPA

    作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/10910059.html 版权声明:本文为博主原创文章,转载请附上博文链接! 前言   前面几章, ...

  8. Spring Data(一)概念和仓库的定义

    Spring Data(一)概念和仓库的定义 Spring Data的主要任务是为数据访问提供一个相似的.一致的.基于Spring的编程模型,同时又保留着下面各个数据存储的特征.它使得使用数据访问技术 ...

  9. Spring Data学习中心

    Spring Data 概览 Spring Data的使命是为数据访问提供熟悉且一致的基于Spring的编程模型,同时仍保留底层数据存储的特殊特性. 它使数据访问技术,关系数据库和非关系数据库,map ...

  10. 两行代码玩转Spring Data排序和分页

    一:唠嗑 在实际项目中对Spring Data的各种使用相当多,简单的增删改查Spring Data提供了现成的方法,一些复杂的,我们可以在接口方法写And,Not等关键字来搞定,想写原生SQL,CQ ...

随机推荐

  1. Android Media Framework(一)OpenMAX框架简介

    学习开源代码最快的方式是先阅读它的文档,再查看它的头文件,最后研读代码实现并进行编译调试.Android早期引入OpenMAX IL作为使用音视频编解码器的标准接口,了解Android Media框架 ...

  2. PaddleOCR之高性能Go语言实现OCR识别

    最近为了让python语言能够直接调用PaddleOCR的C++的动态链接库,针对本人已经开源的PaddleOCR项目https://gitee.com/raoyutian/paddle-ocrsha ...

  3. nginx的11个阶段

    nginx处理请求的11个阶段 阶段 模块 第一阶段 POST_READ realip 第二阶段 SERVER_REWRITE rewrite 第三阶段 FIND_CONFIG 第四阶段 REWRIT ...

  4. 如何创建一个线程池,为什么不推荐使用Executors去创建呢?

    我们在学线程的时候了解了几种创建线程的方式,比如继承Thread类,实现Runnable接口.Callable接口等,那对于线程池的使用,也需要去创建它,在这里我们提供2种构造线程池的方法: 方法一: ...

  5. Atlas快速入门

    先说一些废话 之前的公司在数据中台的项目上调研决定启用了Atlas作为我们数据血缘管理的工具,让我给大家写了一份Atlas快速入门的文档,所以在这里我将这篇文档以一个纯新手视角的方式再一次优化,希望能 ...

  6. SELinux 安全模型——TE

    首发公号:Rand_cs SELinux 安全模型--TE 通过前面的示例策略,大家对 SELinux 应该有那么点感觉认识了,从这篇开始的三篇文章讲述 SELinux 的三种安全模型,会涉及一些代码 ...

  7. tomcat部署Jenkins

    安装环境 jdk 1.8 tomcat 9.0 jenkins 2.290 准备工作 安装好Tomcat,8080端口启动 安装好jdk,配置好环境变量 ECS服务器安全组放开8080端口 关闭防火墙 ...

  8. ABC321题解

    E: problem LCA题. 我们枚举向上跳 \(t\) 步,跳到了 \(y\). 假如说 \(t = 0\) 那么我们计算 \(\text{clac}(x,k)\) 即可.(\(\text{cl ...

  9. 基于阿里Anolis OS8.8 的Hadoop大数据平台建设

    基于阿里Anolis OS8.8 的Hadoop大数据平台建设 VNC安装与使用 0 Anolis OS基本操作 0.1 Anolis OS用户与组管理 0.2 系统进程管理 0.3 文件操作命令及权 ...

  10. 时间格式化转换及时间比较compareTo,Controller层接收参数格式化,从数据源头解决时间格式错误数据对接口的影响

    时间格式化转换及时间比较compareTo,Controller层接收参数格式化,从数据源头解决时间格式错误数据对接口的影响 /** * 时间格式的转换:在具体报错的地方做转换,可能不能从根本上面解决 ...