spring boot jpa 多表关联 @OneToOne @OneToMany @ManyToOne@ManyToMany
1.一对一关联 @OneToOne
import lombok.Data; import javax.persistence.*; /**
* @Author: GWL
* @Description: 一对一
* @Date: Create in 23:10 2019/5/10
*/
@Entity
@Table(name = "t_girlfriend")
@Data
public class Girlfriend { @Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "g_id")
private int id; @Column(name = "g_name")
private String name; @Column(name = "g_age")
private int age; @Column(name = "g_sweet")
private String sweet; @Temporal(value=TemporalType.TIMESTAMP)
@Column(name = "create_date")
private java.util.Date createDate; @OneToOne
@JoinColumn(name = "t_boyfriend")
private Users user; }
2.多对一和一对多 @ManyToOne
import lombok.Data; import javax.persistence.*; /**
* @Author: GWL
* @Description: 用户表
* @Date: Create in 22:40 2019/5/3
*
*/
@Entity
@Table(name="user")
@Data
public class Users {
/**
*
* 一个角色多个用户
* @JoinColumn 维护外键
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id")
private int id; @Column(name = "user_name")
private String name; @Column(name = "user_age")
private int age; @Temporal(value=TemporalType.TIMESTAMP)
@Column(name = "create_date")
private java.util.Date createDate; @ManyToOne(cascade = CascadeType.PERSIST)
@JoinColumn(name = "r_id")
private Roles roles; }
@OneToMany
import lombok.Getter;
import lombok.Setter; import javax.persistence.*;
import java.util.HashSet;
import java.util.Set; /**
* @Author: GWL
* @Description: 角色表 与用户表一对多,角色表与菜单表多对多
* @Date: Create in 19:06 2019/5/8
*/
@Entity
@Table(name="t_roles")
@Getter
@Setter
public class Roles { @Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "role_id")
private int roleId; @Column(name = "role_name")
private String roleName; @Column(name = "note")
private String note; @OneToMany(mappedBy = "roles")
private Set<Users> users = new HashSet<>(); @ManyToMany(cascade = CascadeType.PERSIST,fetch = FetchType.EAGER)
@JoinTable(name = "t_roles_menu",joinColumns = @JoinColumn(name = "role_id"),inverseJoinColumns = @JoinColumn(name = "menu_id"))
private Set<Menu> menus = new HashSet<>(); @Override
public String toString() {
return "Roles{" +
"roleid=" + roleId +
", roleName='" + roleName + '\'' +
", note='" + note + '\'' +
'}';
}
}
3.多对多 @ManyToMany
import lombok.Getter;
import lombok.Setter; import javax.persistence.*;
import java.util.HashSet;
import java.util.Set; /**
* @Author: GWL
* @Description: 角色表 与用户表一对多,角色表与菜单表多对多
* @Date: Create in 19:06 2019/5/8
*/
@Entity
@Table(name="t_roles")
@Getter
@Setter
public class Roles { @Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "role_id")
private int roleId; @Column(name = "role_name")
private String roleName; @Column(name = "note")
private String note;
@ManyToMany(cascade = CascadeType.PERSIST,fetch = FetchType.EAGER)
@JoinTable(name = "t_roles_menu",joinColumns = @JoinColumn(name = "role_id"),inverseJoinColumns = @JoinColumn(name = "menu_id"))
private Set<Menu> menus = new HashSet<>(); @Override
public String toString() {
return "Roles{" +
"roleid=" + roleId +
", roleName='" + roleName + '\'' +
", note='" + note + '\'' +
'}';
}
}
import lombok.Data; import javax.persistence.*;
import java.util.HashSet;
import java.util.Set; /**
* @Author: GWL
* @Description: 多对多 菜单表与角色表
* @Date: Create in 18:47 2019/5/9
*/
@Entity
@Table(name = "t_menu")
@Data
public class Menu { @Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "menu_id")
private int menuId; @Column(name = "menu_name")
private String menuName; @Column(name = "menu_url")
private String menuUrl; @Column(name = "menu_fid")
private int fatherId; @ManyToMany(mappedBy = "menus")
Set<Roles> roles = new HashSet<>(); }
有兴趣的朋友可以查看本人spring-boot-jpa GitHub项目
spring boot jpa 多表关联 @OneToOne @OneToMany @ManyToOne@ManyToMany的更多相关文章
- Spring Boot JPA中关联表的使用
文章目录 添加依赖 构建Entity 构建Repository 构建初始数据 测试 Spring Boot JPA中关联表的使用 本文中,我们会将会通过一个Book和Category的关联关系,来讲解 ...
- Spring Boot + JPA(hibernate 5) 开发时,数据库表名大小写问题
(转载)Spring Boot + JPA(hibernate 5) 开发时,数据库表名大小写问题 这几天在用spring boot开发项目, 在开发的过程中遇到一个问题hibernate在执 ...
- Spring Boot Jpa 表名小写转大写
今天在使用SpringBoot整合Hibernate后创建表,表名为小写,而在linux下,mysql的表名是区分大小写的,因此在我的数据表中,就出现了两个一样的表 act_id_user 和 AC ...
- Spring Boot(五):Spring Boot Jpa 的使用
在上篇文章Spring Boot(二):Web 综合开发中简单介绍了一下 Spring Boot Jpa 的基础性使用,这篇文章将更加全面的介绍 Spring Boot Jpa 常见用法以及注意事项. ...
- Spring Boot Jpa 的使用
Spring Boot Jpa 介绍 首先了解 Jpa 是什么? Jpa (Java Persistence API) 是 Sun 官方提出的 Java 持久化规范.它为 Java 开发人员提供了一种 ...
- (转)Spring Boot(五):Spring Boot Jpa 的使用
http://www.ityouknow.com/springboot/2016/08/20/spring-boot-jpa.html 在上篇文章Spring Boot(二):Web 综合开发中简单介 ...
- Spring Boot(十五):spring boot+jpa+thymeleaf增删改查示例
Spring Boot(十五):spring boot+jpa+thymeleaf增删改查示例 一.快速上手 1,配置文件 (1)pom包配置 pom包里面添加jpa和thymeleaf的相关包引用 ...
- spring boot JPA中实体类常用注解
spring boot jpa中的注解很多,参数也比较多.没必要全部记住,但是经常查看官方文档也比较麻烦,记录一下一些常用的注解.通过一些具体的例子来帮助记忆. @Entity @Table(name ...
- Spring boot Jpa添加对象字段使用数据库默认值
Spring boot Jpa添加对象字段使用数据库默认值 jpa做持久层框架,项目中数据库字段有默认值和非空约束,这样在保存对象是必须保存一个完整的对象,但在开发中我们往往只是先保存部分特殊的字段其 ...
随机推荐
- docker volume持久化存储与数据分享
第一种 指定volume文件mysql存储,存储的位置为/var/lib/mysql -v mysql:/var/lib/mysql 第二种 同步文件,将容器中的skeleton文件夹的内容同步到宿主 ...
- 分布式-技术专区-Redis分布式锁实现-第一步
承接前面一篇Redis分布式锁的原理介绍 https://www.cnblogs.com/liboware/p/11921759.html 我们针对于实现方案进行接下来上篇进行重新的规划和定义以及完善 ...
- SQL Server 2014 中新建登录及权限分配【界面版】
本篇经验将和大家介绍分配SQL Server 2014 中,新建登录用户,分配权限,并指定该用户的数据库的方法,希望对大家的工作和学习有所帮助! 方法/步骤 1 打开 MS SQL Server Ma ...
- 2019-9-2-C#委托
title author date CreateTime categories C#委托 lindexi 2019-09-02 12:57:37 +0800 2018-2-13 17:23:3 +08 ...
- aarch64 架构 交叉编译 tcpdump
1. 下载 tcpdump 源码 地址 :http://www.tcpdump.org/ (4.9.2) tcpdump 依赖 libpcap 源码 地址 : http://www.tcpdu ...
- ICPC2008哈尔滨-E-Gauss Elimination
题目描述 Li Zhixiang have already been in “Friendship” ocean-going freighter for three months. The excit ...
- 【leetcode】bash脚本练习
[192]Word Frequency Write a bash script to calculate the frequency of each word in a text file words ...
- nc临时开启端口并监听
port="6379 3306 27017 4505 4506 24007 24008 49152" #while true #do for i in $port do isexi ...
- 【JZOJ3920】噪音
description FJ有M个牛棚,编号1至M,刚开始所有牛棚都是空的.FJ有N头牛,编号1至N,这N头牛按照编号从小到大依次排队走进牛棚,每一天只有一头奶牛走进牛棚.第i头奶牛选择走进第p[i] ...
- 设计不严谨 - Get参数传日期空格未转义字符出现截断请求,后端无法处理
设计不严谨 Get参数传递日期的时候有空格,如果未转义的话,会截断请求,然后后端无法处理. 从业务场景看 从产品的角度看,产品想要看每个活动的效果,而不是想知道技术. 角度不同,视觉不同 mark