🌷 JPA注解
在JPA
中,JPA注解
作用有两个
- 根据
JPA注解
生成table - 根据
JPA注解
生成sql
如果,你想生成一对多关系的表
或者一对多查询sql
,使用@OneToOne
和@JoinColumn
和@OneToMany
@OneToOne
- 表示在多方
使用,表示table中添加外键列
@JoinColumn
- 用来对column name
进行定制@OneToMany
- 在一方使用
🌹 @OneToOne
和JoinColumn
和@OneToMany
@ManyToMany
- 多方使用,表示在table
中添加外键列
。
targetEntity
- 关联的类cascade
- 级联方式fetchType
- 查询时候,是直接查询出来
还是懒加载
@JoinColumn
- 定制column
name
- column名称nullable
- 否口可以为空
@OneToMany
- 一方使用
targetEntity
- 关联的类cascade
- 级联方式fetchType
- 查询时候,是直接查询出来
还是懒加载
mappedBy
- 指定从表的外键列
🌻 使用
比如,我有User
和Blog
,是一对多关系
为了生成上图关系,我需要如下配置
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; // 博客
}