JPA映射关系
Posted 1999wang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JPA映射关系相关的知识,希望对你有一定的参考价值。
关系:
实体关系是指实体与实体之间的关系,从方向上分为单向关联和双向关联,从实体数量上分为一对一、一对多、多对多等。对于任何两个实体,都要从这两个方面区分它们之间的关系。
一对一两种配置方式:
1:主键共享(把一个实体的主键配置为另外一个实体的主键)
2:配合唯一外键
单项一对多
:配置一个实体的外键 数据库外键存在多方,最好让多方来维护外键 ,一方放弃管理维护
双向多对一/双向一对多
public class ProductDir
@Id
@GeneratedValue
private Long id;
private String name;
@OneToMany
@JoinColumn(name="dir_id")
private Set<Product> products = new HashSet<Product>();
@Entity
public class Product
@Id
@GeneratedValue
private Long id;
private String name;
@ManyToOne(fetch = FetchType.LAZY) // 实现延迟加载
@JoinColumn(name = "dir_id")
private ProductDir dir;
集合映射的类型
1.list PersistentBag(有序,可以重复)
2.set PersistentSet(无序,不可以重复)
级联
:
级联保存 PERSIST
级联删除 REMOVE
全部 ALL
孤儿删除 orphanRemoval = true (从一方解除关系,让多方外键置为空)
单项多对多
@ManyToMany
@joinTable 中间表配置
joinColumns:首 个列名 inverseJoinColumns: 下个列名
实体类没什么变化 默认懒加载 只配置一个实体类
双向多对多
列Teacher/Student
以上是关于JPA映射关系的主要内容,如果未能解决你的问题,请参考以下文章