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項目


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM