写在前面
一对多的配置
这里我们先定义一个新的实体类:
@Entity
@Table(name = "cst_linkman")
public class LinkMan {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "lkm_id")
private Long lkmId;
@Column(name = "lkm_name")
private String lkmName;
@Column(name = "lkm_gender")
private String lkmGender;
@Column(name = "lkm_phone")
private String lkmPhone;
@Column(name = "lkm_mobile")
private String lkmMobile;
@Column(name = "lkm_email")
private String lkmEmail;
@Column(name = "lkm_position")
private String lkmPosition;
@Column(name = "lkm_memo")
private String lkmMemo;
}
之后我们在一的那方配置一下:
/**
* 1.声明关系 @OneToMany 配置一对多关系
* 2.配置外键 @JoinColumn 配置外键 name:外键字段名称 referencedColumnName:参照的主表的主键字段名称
* 在客户实体类上(一的那方)添加了外键配置,所以对于客户而言,也具备了维护外键的作用
*
* mappedBy:对方配置关系的属性名称,放弃外键维护权
* cascade:配置级联(可以配置到设置多表的映射关系的注解上)
* CascadeType.ALL:所有 CascadeType.MERGE:更新 CascadeType.PERSIST 保存,CascadeType.REMOVE 删除
*/
// @OneToMany(targetEntity = LinkMan.class)
// @JoinColumn(name = "lkm_cust_id",referencedColumnName = "cust_id")
/**
* fetch:配置关联对象的加载方式
* EAGER: 立即加载
* LAZY: 延迟加载
*/
@OneToMany(mappedBy = "customer",cascade = CascadeType.ALL,fetch = FetchType.EAGER)
private Set linkMen = new HashSet<>();
在多的那方配置一下:
/**
* 配置联系人到客户的多对一关系
* 使用注解的形式配置多对一关系
* 1.配置表关系 @ManyToOne 配置多对一关系
* 2.配置外键(中间表)
* @JoinColumn(外键名称)
*/
@ManyToOne(targetEntity = Customer.class,fetch = FetchType.LAZY)
@JoinColumn(name = "lkm_cust_id",ref