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做持久层框架,项目中数据库字段有默认值和非空约束,这样在保存对象是必须保存一个完整的对象,但在开发中我们往往只是先保存部分特殊的字段其 ...
随机推荐
- position: relative 和 position: absoution 的详解
position属性指定一个元素(静态的,相对的,绝对或固定)的定位方法的类型 relative:生成相对定位的元素,相对于其正常位置进行定位. 对应下图的偏移 absolute: 生成绝对定位的元素 ...
- Excel_PoweQuery——条件计数、条件求和
岁月不居,时节如流. 时光荏苒,岁月如梭. 前面两段充分体现了博主深厚的文学素养,别和博主争,博主说啥就是啥. 其实,对于大量数据的处理,这几年微软Office做的不单单是2007的时候把Excel的 ...
- Vue_子级组件调用主组件函数
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- Android各种蓝牙设备的UUID(转)
转自:http://www.14blog.com/archives/481 UUID是“Universally Unique Identifier”的简称,通用唯一识别码的意思.对于蓝牙设备,每个服务 ...
- PHP-组合总和
给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的数字可以无限制重复被选 ...
- ES5的 forEach, map 方法的实现
如果浏览器不支持forEach,map方法, 要我们自己封装一个, 该怎么操作呢? 1. forEach Array.prototype.forEach = function(fn) { if (th ...
- war包里面文件的修改方式
1 将war包移动到一个干净的路径下,使用 jar xvf ROOT.war 命令将war进行解压操作 2 修改相应的文件内容,修改想要修改的文件,比如web.xml 3 使用 j ...
- 图像元数据编辑软件:MetaImage使用流程讲解
MetaImage是唯一的macOS工具,允许在处理所有类型的标签格式时编辑,读取和写入元数据.在时尚的界面中导航,您可以更改图像元数据的所有内容,并对数百张相似的照片进行相同的编辑. https:/ ...
- nc临时开启端口并监听
port="6379 3306 27017 4505 4506 24007 24008 49152" #while true #do for i in $port do isexi ...
- SQl 分组后按照某一列拼接字符串
/* 分组之后拼接字符串 */ ;with t as( SELECT WorkflowId,Remark FROM dbo.OperatorAutomationProcess GROUP BY Wor ...