Spring Data JPA多表查询

本文介绍了在Spring Data JPA中实现多表查询的两种方法:通过结果集接口和利用关联映射。详细讲解了JPA的相关注解,并通过代码示例展示了如何在用户类和角色类之间进行多对一查询的创建、读取、更新和删除操作。
摘要由CSDN通过智能技术生成

多表查询在Spring Data JPA中有两种实现方式
第一种创建一个结果集接口来接收多表连查的结果
第二种利用JPA的关联映射来实现

先来熟悉一下几个注解

注解 意思 属性
@ManyToOne 定义了连接表之间的多对一的关系。 targetEntity属性表示关联的实体类型,可省略,fetch属性表示加载策略,FetchType的取值范围LAZY(延迟加载)默认上EAGER,cascade属性表示级联操作,CascadeType取值范围PERSIST(级联持久化),REMOVE(级联删除),ALL(级联所以操作)…等,一般不推荐使用ALL,风险较大,cascade属性一般不在多对一的地方使用,通常在一对多地方使用
@JoinColumn 指定一个实体组织或实体的集合。这是用在多对一和一对多关联。 name属性表示外键的字段名称
@OneToMany 定义了连接表之间存在一个一对多的关系。 具有@ManyToOne注解的属性,还有mappedby属性用来设置对象之间的关系维护方

这里只是列出了JPA进行多表查询的注解,如果对普通的JAP注解不了解的可以去看一下这篇相关的博客
什么是JPA、JPA的基础实战

话不多说,直接上代码,让老夫来瞎操作一波
先上两个实体类,用户类,角色类,这里不建议使用@Data的注解,不然会出现堆栈溢出的异常
大家在看实体类的时候一定要认真看哦,看清楚使用了哪些注解以及属性
用户类

import javax.persistence.*;
import java.io.Serializable;

@Entity
@Table(name = "sys_user")
public class SysUser implements Serializable {
   
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long userId;
    private String userName;
    private String userPassword;

    private long userFlag;

    @ManyToOne(targetEntity = SysRole.class)
    @JoinColumn(name = "user_role_id")
    private SysRole sysRole;

    public long getUserId() {
   
        return userId;
    }

    public void setUserId(long userId) {
   
        this.userId = userId;
    }

    public SysRole getSysRole() {
   
        return sysRole;
    }

    public void setSysRole(SysRole sysRole)
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值