Spring Data JPA 的一对多,一对多,多对多操作
@Entity
@Table(name = "t_users")
public class Users implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)//自增长
    @Column(name = "userid")
    private Integer userid;
    private String username;
    private Integer userage;
    @OneToOne(cascade = CascadeType.PERSIST)
    //@ManyToOne(cascade = CascadeType.PERSIST)
    @JoinColumn(name = "fk_roles_id")
    private Roles roles;
创建Roles实体
@Entity
@Table(name = "t_roles")
public class Roles {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "roleid")
    private Integer roleid;
    @Column(name = "rolename")
    private String rolename;
    @OneToOne(mappedBy = "roles")
    private Users users;
package com.bjsxt.dao;
import com.bjsxt.pojo.Users;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
public interface UserDao extends JpaRepository<Users,Integer>, JpaSpecificationExecutor<Users> {
}
com.bjsxt.test.UserTest
   @Test
    public void addUserAndRole(){
        Roles roles=new Roles();
        roles.setRolename("管理员");
        Users users=new Users();
        users.setUsername("yxf");
        users.setUserage(22);
        //建立关系
        users.setRoles(roles);
        roles.setUsers(users);
        userDao.save(users);
package com.bjsxt.pojo;
import javax.persistence.*;
import java.io.Serializable;
@Entity
@Table(name = "t_users")
public class Users implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)//自增长
    @Column(name = "userid")
    private Integer userid;
    private String username;
    private Integer userage;
   // @OneToOne(cascade = CascadeType.PERSIST)
    @ManyToOne(cascade = CascadeType.PERSIST)
    @JoinColumn(name = "fk_roles_id")
    private Roles roles;
    public Users(){}
    public Integer getUserid() {
        return userid;
    }
    public void setUserid(Integer userid) {
        this.userid = userid;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public Integer getUserage() {
        return userage;
    }
    public void setUserage(Integer userage) {
        this.userage = userage;
    }
    public Roles getRoles() {
        return roles;
    }
    public void setRoles(Roles roles) {
        this.roles = roles;
    }
    public Users(String username, Integer userage, Roles roles) {
        this.username = username;
        this.userage = userage;
        this.roles = roles;
    }
    @Override
    public String toString() {
        return "Users{" +
                "userid=" + userid +
                ", username='" + username + '\'' +
                ", userage=" + userage +
                ", roles=" + roles +
                '}';
    }
}
package com.bjsxt.pojo;
import javax.persistence.*;
import java.util.HashSet;
import java.util.Set;
@Entity
@Table(name = "t_roles")
public class Roles {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "roleid")
    private Integer roleid;
    @Column(name = "rolename")
    private String rolename;
    //@OneToOne(mappedBy = "roles")
    //private Users users;
    @OneToMany(mappedBy = "roles",cascade = CascadeType.PERSIST)
    private Set<Users> users=new HashSet<>();
    public Roles(String rolename, Set<Users> users) {
        this.rolename = rolename;
        this.users = users;
    }
    @Override
    public String toString() {
        return "Roles{" +
                "roleid=" + roleid +
                ", rolename='" + rolename + '\'' +
                ", users=" + users +
                '}';
    }
    public Integer getRoleid() {
        return roleid;
    }
    public void setRoleid(Integer roleid) {
        this.roleid = roleid;
    }
    public String getRolename() {
        return rolename;
    }
    public void setRolename(String rolename) {
        this.rolename = rolename;
    }
    public Set<Users> getUsers() {
        return users;
    }
    public void setUsers(Set<Users> users) {
        this.users = users;
    }
    public Roles(){}
}
 @Test
    public void addUserAndRole(){
        Roles roles=new Roles();
        roles.setRolename("班长");
        Users users=new Users();
        users.setUsername("xm");
        users.setUserage(22);
        Users users1=new Users();
        users1.setUsername("hw");
        users1.setUserage(23);
        Set<Users> set = roles.getUsers();
        set.add(users);
        set.add(users1);
        users.setRoles(roles);
        users1.setRoles(roles);
        userDao.save(users);
        userDao.save(users1);
    }
package com.bjsxt.pojo;
import javax.persistence.*;
import java.util.HashSet;
import java.util.Set;
@Entity
@Table(name = "t_roles")
public class Roles {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "roleid")
    private Integer roleid;
    @Column(name = "rolename")
    private String rolename;
    @ManyToMany(cascade = CascadeType.PERSIST,fetch = FetchType.EAGER)
    @JoinTable(name = "t_menus_roles",joinColumns = @JoinColumn(name = "role_id"),inverseJoinColumns = @JoinColumn(name = "menu_id"))
    private Set<Menus> menus=new HashSet<>();
    public Roles(){}
    @Override
    public String toString() {
        return "Roles{" +
                "roleid=" + roleid +
                ", rolename='" + rolename + '\'' +
                ", menus=" + menus +
                '}';
    }
    public Integer getRoleid() {
        return roleid;
    }
    public void setRoleid(Integer roleid) {
        this.roleid = roleid;
    }
    public String getRolename() {
        return rolename;
    }
    public void setRolename(String rolename) {
        this.rolename = rolename;
    }
    public Set<Menus> getMenus() {
        return menus;
    }
    public void setMenus(Set<Menus> menus) {
        this.menus = menus;
    }
    public Roles(String rolename, Set<Menus> menus) {
        this.rolename = rolename;
        this.menus = menus;
    }
}
package com.bjsxt.pojo;
import javax.persistence.*;
import java.util.HashSet;
import java.util.Set;
@Entity
@Table(name = "t_menus")
public class Menus {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "menusid")
    private  Integer menusid;
    @Column(name = "menusname")
    private String menusname;
    @Column(name = "menusurl")
    private String menusurl;
    @Column(name = "fatherid")
    private Integer fatherid;
    @ManyToMany(mappedBy = "menus")
    private Set<Roles> roles=new HashSet<>();
    public Menus(){}
    @Override
    public String toString() {
        return "Menus{" +
                "menusid=" + menusid +
                ", menusname='" + menusname + '\'' +
                ", menusurl='" + menusurl + '\'' +
                ", fatherid=" + fatherid +
                ", roles=" + roles +
                '}';
    }
    public Integer getMenusid() {
        return menusid;
    }
    public void setMenusid(Integer menusid) {
        this.menusid = menusid;
    }
    public String getMenusname() {
        return menusname;
    }
    public void setMenusname(String menusname) {
        this.menusname = menusname;
    }
    public String getMenusurl() {
        return menusurl;
    }
    public void setMenusurl(String menusurl) {
        this.menusurl = menusurl;
    }
    public Integer getFatherid() {
        return fatherid;
    }
    public void setFatherid(Integer fatherid) {
        this.fatherid = fatherid;
    }
    public Set<Roles> getRoles() {
        return roles;
    }
    public void setRoles(Set<Roles> roles) {
        this.roles = roles;
    }
    public Menus(String menusname, String menusurl, Integer fatherid, Set<Roles> roles) {
        this.menusname = menusname;
        this.menusurl = menusurl;
        this.fatherid = fatherid;
        this.roles = roles;
    }
}
package com.bjsxt.test;
import com.bjsxt.dao.RolesDao;
import com.bjsxt.pojo.Menus;
import com.bjsxt.pojo.Roles;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.Set;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class RolesTest {
    @Autowired
    private RolesDao rolesDao;
    @Test
    public void addRoles(){
        Roles roles=new Roles();
        roles.setRolename("超级管理员");
        Menus menus1=new Menus();
        menus1.setFatherid(-1);
        menus1.setMenusname("***管理系统");
        menus1.setMenusurl(null);
        Menus menus2=new Menus();
        menus2.setFatherid(1);
        menus2.setMenusname("用户管理");
        menus2.setMenusurl(null);
        roles.getMenus().add(menus1);
        roles.getMenus().add(menus2);
        menus1.getRoles().add(roles);
        menus2.getRoles().add(roles);
        rolesDao.save(roles);
    }
    @Test
    public void findall(){
        Roles roles = rolesDao.findOne(10);
        System.out.println("角色信息:"+roles);
        Set<Menus> menus = roles.getMenus();
        for (Menus menu : menus) {
            System.out.println("菜单信息:"+menu);
        }
    }
}
Spring Data JPA 的一对多,一对多,多对多操作的更多相关文章
- [Z]Spring Data JPA 之 一对一,一对多,多对多 关系映射
		
一.@OneToOne关系映射 JPA使用@OneToOne来标注一对一的关系. 实体 People :用户. 实体 Address:家庭住址. People 和 Address 是一对一的关系. 这 ...
 - Spring Data JPA 之 一对一,一对多,多对多 关系映射
		
一.@OneToOne关系映射 JPA使用@OneToOne来标注一对一的关系. 实体 People :用户. 实体 Address:家庭住址. People 和 Address 是一对一的关系. 这 ...
 - Spring Data Jpa系列教程--------实体解析和关联关系
		
Spring Data Jpa是基于HIbernate开发的,所以建立实体建的实体和映射关系需要好好好的去了解一下,本文有以下内容,实体管理器介绍,实体与数据库表的映射介绍,关联关系(一对多,多对多) ...
 - Spring Data JPA入门及深入
		
一:Spring Data JPA简介 Spring Data JPA 是 Spring 基于 ORM 框架.JPA 规范的基础上封装的一套JPA应用框架,可使开发者用极简的代码即可实现对数据库的访问 ...
 - Spring Data JPA在Spring Boot中的应用
		
1.JPA JPA(Java Persistence API)是Sun官方提出的Java持久化规范.它为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关系数据.他的出现主要是为了简 ...
 - SpringBoot入门:Spring Data JPA 和 JPA(理论)
		
参考链接: Spring Data JPA - Reference Documentation Spring Data JPA--参考文档 中文版 纯洁的微笑:http://www.ityouknow ...
 - 【ORM框架】Spring Data JPA(一)--  入门
		
本文参考:spring Data JPA入门 [原创]纯干货,Spring-data-jpa详解,全方位介绍 Spring Data JPA系列教程--入门 一.Spring Data JPA介 ...
 - 展开被 SpringBoot 玩的日子 《 五 》 spring data jpa 的使用
		
在上篇文章< 展开被 SpringBoot 玩的日子 < 二 >WEB >中简单介绍了一下spring data jpa的基础性使用,这篇文章将更加全面的介绍spring da ...
 - spring-boot (三) spring data jpa
		
学习文章来自:http://www.ityouknow.com/spring-boot.html spring data jpa介绍 首先了解JPA是什么? JPA(Java Persistence ...
 - spring data jpa 全面解析(实践 + 源码分析)
		
前言 本文将从示例.原理.应用3个方面介绍spring data jpa. 以下分析基于spring boot 2.0 + spring 5.0.4版本源码 概述 JPA是什么? JPA (Java ...
 
随机推荐
- mysql里面的时间获取(格式年月日)
			
1.当前日期 select DATE_SUB(curdate(),INTERVAL 0 DAY) ; 2.明天日期 select DATE_SUB(curdate(),INTERVAL -1 DAY) ...
 - Geometry 判断几何是否被另一个几何/线段分割成多段
			
如下图,如何判断几何多边形A被多边形B,切割为多段几何? 几何A被几何B切割 1. 获取几何A与几何B的交集C var intersectGeometry = new CombinedGeometry ...
 - PHP经典面试题:如何保证缓存与数据库的双写一致性?
			
只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题? 面试题剖析 一般来说,如果允许缓存可以稍微的跟数据库偶尔有不一致的情况,也就是说 ...
 - Appium+python自动化(四十二)-Appium自动化测试框架综合实践- 寿终正寝完结篇(超详解)
			
1.简介 按照上一篇的计划,今天给小伙伴们分享执行测试用例,生成测试报告,以及自动化平台.今天这篇分享讲解完.Appium自动化测试框架就要告一段落了. 2.执行测试用例&报告生成 测试报告, ...
 - Linux入门之安装及相关知识。
			
一.VMware虚拟机安装与使用 1.1.VMware 简介 VMware是一个虚拟PC的软件,可以在现有的操 作系统上虚拟出一个新的硬件环境,相当于模拟 出一台新的PC.以此来实现在一台机器上真正 ...
 - 领扣(LeetCode)回文链表 个人题解
			
请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 进阶:你能否用 O(n) 时间复杂 ...
 - 如何在后台封装el-tree所需要的数据格式
			
背景 最近遇到了一个分层级展示指标的需求,前端使用el-tree树形组件,要求按官方文档的格式提供数据. 数据格式: id: 1, label: '一级 1', children: id: 4, la ...
 - RALM: 实时 Look-alike 算法在微信看一看中的应用
			
嘉宾:刘雨丹 腾讯 高级研究员 整理:Jane Zhang 来源:DataFunTalk 出品:DataFun 注:欢迎关注DataFunTalk同名公众号,收看第一手原创技术文章. 导读:本次分享是 ...
 - python:利用celery分布任务
			
Celery是一个功能完备即插即用的任务队列.它使得我们不需要考虑复杂的问题,使用非常简单.celery看起来似乎很庞大.celery适用异步处理问题,当发送邮件.或者文件上传, 图像处理等等一些比较 ...
 - 对js中局部变量、全局变量和闭包的理解
			
对js中局部变量.全局变量和闭包的理解 局部变量 对于局部变量,js给出的定义是这样的:在 JavaScript函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它.(该变量的作用域 ...