JPA - 一对多关系 - [@OneToOne、@JoinColumn、@OneToMany]

本文介绍了JPA中的一对多关系配置,包括@OneToOne、@JoinColumn、@OneToMany等注解的使用。详细解释了如何通过这些注解来定义表结构、级联操作以及外键映射,以实现实体之间的关联。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

🌷 JPA注解

JPA中,JPA注解作用有两个

  • 根据JPA注解生成table
  • 根据JPA注解生成sql

如果,你想生成一对多关系的表或者一对多查询sql,使用@OneToOne@JoinColumn@OneToMany

  • @OneToOne - 表示在多方使用,表示table中添加外键列
  • @JoinColumn - 用来对column name进行定制
  • @OneToMany - 在一方使用

🌹 @OneToOneJoinColumn@OneToMany

@ManyToMany - 多方使用,表示在table中添加外键列

  • targetEntity - 关联的类
  • cascade - 级联方式
  • fetchType - 查询时候,是直接查询出来还是懒加载

@JoinColumn - 定制column

  • name - column名称
  • nullable - 否口可以为空

@OneToMany - 一方使用

  • targetEntity - 关联的类
  • cascade - 级联方式
  • fetchType - 查询时候,是直接查询出来还是懒加载
  • mappedBy - 指定从表的外键列

🌻 使用

比如,我有UserBlog,是一对多关系
ER图

为了生成上图关系,我需要如下配置

1️⃣给Blog(多方),​ 使用@OneToOne@JoinColumn

@Entity(name = "blog")
@Data
public class Blog {
  
// 🍎 这里
    @OneToOne(targetEntity = User.class,cascade = CascadeType.DETACH,fetch = FetchType.LAZY)
    @JoinColumn(name = "user_id",nullable = false)
    private User user; // 创建人
}

2️⃣ 给User(一方)添加@OneToMany@JoinCloumn

  • 一定要添加@JoinColumn,指定到多方外键列
@Entity(name = "user")
@Data
public class User {
	// 🍎 这里
    @OneToMany(targetEntity = Blog.class,fetch = FetchType.LAZY)
     @JoinColumn(name = "user_id")
    private List<Blog> blogList; // 博客
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值