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做持久层框架,项目中数据库字段有默认值和非空约束,这样在保存对象是必须保存一个完整的对象,但在开发中我们往往只是先保存部分特殊的字段其 ...
随机推荐
- php &引用符的注意情况
- 封装tab切换事件
HTML <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...
- LVM-扩容目录
LVM LVM是一种源自Unix环境,在Linux上广泛应用的逻辑虚拟盘存储方案.借助LVM,可以在保证各个Linux目录分区稳定,又可以实现各目录存储资源灵活分配. 本文主要系统介绍Linux环境下 ...
- flask获取参数
<!DOCTYPE html> body, html { width: 100%; height: 100%; } , ::after, ::before { -webkit-box-si ...
- ssh文件 ip锁定
vi ~/.ssh/config Host web*hostname 115.29.242.1**user lian Host **hostname 192.168.1.**user dface
- bootstrap学习(四)表格
基础样式: 自适应沾满浏览器 <table class="table"> <tr> <th>序号</th> <th>姓名 ...
- SQL中的DDL、DML、DCL、TCL
1.DDL(Data Definition Language)数据库定义语言statements are used to define the database structure or schema ...
- servlet的ServletContext接口
ServletContext Servlet 上下文 每个web工程都只有一个ServletContext对象,也就是不管在哪个servlet里面,获取到的这个ServletContext对象都是同一 ...
- bat批处理----set
转载自 https://www.cnblogs.com/Braveliu/p/5081084.html [1]set命令简介 set,设置. [2]set命令使用 1. 打印系统环境变量.set ...
- 【记录】Http 状态码整理
Http状态码: 1XX:信息,服务器收到请求,需要请求者继续执行操作 2XX:成功,操作被成功接收并处理 3XX:重定向,需要进一步的操作以完成请求 4XX:客户端错误,请求包含语法错误或无法完成请 ...