首页 > 其他分享 >springboot3整合高版本spring data neo4j

springboot3整合高版本spring data neo4j

时间:2024-06-04 20:11:18浏览次数:21  
标签:String roles spring private relation springboot3 neo4j neo4jClient public

本博客适用于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> {
}

 

标签:String,roles,spring,private,relation,springboot3,neo4j,neo4jClient,public
From: https://www.cnblogs.com/kun1790051360/p/18231620

相关文章

  • springboot+vue+mybatis学生奖惩管理系统+PPT+论文+讲解+售后
    在如今社会上,关于信息上面的处理,没有任何一个企业或者个人会忽视,如何让信息急速传递,并且归档储存查询,采用之前的纸张记录模式已经不符合当前使用要求了。所以,对学生奖惩信息管理的提升,也为了对学生奖惩信息进行更好的维护,学生奖惩管理系统的出现就变得水到渠成不可缺少。通过对......
  • springboot+vue+mybatis大学生就业管理系统+PPT+论文+讲解+售后
    现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本学生就业管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事......
  • Spring-MVC注解支持Ant风格的模糊匹配和Restful风格的接收数据------Spring-MVC框架
    packagecom.alatus.mvc3.controller;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.PathVariable;importorg.springframework.web.bind.annotation.RequestMapping;@ControllerpublicclassIndexController{......
  • Redis 结合 Docker 搭建集群,并整合SpringBoot
    软件版本Redis7.2.5Docker26.1.3 准备工作由于docker直接拉取运行了,所以需要提前准备配置文件Indexof/releases/(redis.io)下载后,把redis-7.2.5.tar.gz\redis-7.2.5.tar\redis-7.2.5\里的redis.confsentinel.conf复制出来 概览结构如上图所示,准备6个服务器。......
  • springboot智慧校园管理系统的设计与实现(文档+源码)
    大家好,我是永钊,一个混迹在java圈的码农,今天要和大家聊的是一款基于springboot的智慧校园管理系统,项目源码请联系永钊,目前有各类成品毕设javawebsshssmspringboot等等项目框架,源码丰富,欢迎咨询。 本网站系统采用了Mysql数据库,Java语言,SpringBoot框架等技术进行编程实......
  • springboot的设计与实现(文档+源码)足球青训俱乐部管理后台系统
    大家好,我是永钊,一个混迹在java圈的码农,今天要和大家聊的是一款基于springboot的足球青训俱乐部管理后台系统,项目源码请联系永钊,目前有各类成品毕设javawebsshssmspringboot等等项目框架,源码丰富,欢迎咨询。 本网站系统重点阐述了足球青训俱乐部管理后台系统的开发过程,......
  • 在线考试|基于Springboot的在线考试管理系统设计与实现(源码+数据库+文档)
    在线考试管理系统目录目录基于Springboot的在线考试管理系统设计与实现一、前言二、系统设计三、系统功能设计 1、前台:2、后台管理员功能四、数据库设计 五、核心代码 六、论文参考七、最新计算机毕设选题推荐八、源码获取:博主介绍:✌️大厂码农|毕设布道师,......
  • Java毕业设计 基于springboot vue大学新生报到系统
    Java毕业设计基于springbootvue大学新生报到系统SpringBoot大学新生报到系统功能介绍首页图片轮播报道流程流程详情校园公告公告详情登录注册个人中心更新信息学生后台登录个人中心修改密码个人信息学生报到班级分配宿舍分配缴费信息管理员登录个......
  • neo4j下载安装
    一、下载安装Neo4jJDK已下载好官网:Neo4jDeploymentCenter-GraphDatabase&Analytics然后选择自己需要的的版本进行下载 安装打开系统变量,新建系统变量 点击Path,新建,输入 %NEO4J_HOME%\bin 测试是否设置成功,打开命令窗口,输入 neo4j.batconsole 复制......
  • spring boot mybatis mysql 对emoji表情的插入与查询支持
    在网上查了很多都是要求在数据层面修改比如userName字段的值有可能存emoji表情那就把字段改成字符集 utf8mb4我的排序规则是utf8mb4_unicode_ci,如果单个字段不行就整个表varchar字段都改成这样的到了这部,使用mysql客户端对这个字段增删改查是没问题的但是很少有人提到myb......