单向一对多
@Data
@Entity
@Table(name = "banner")
public class Banner {
@Id
private Integer id;
private String name;
@OneToMany(fetch = FetchType.LAZY)
@JoinColumn(name = "bannerId", referencedColumnName = "id")
private List<BannerItem> items;
}
下面为双方配置,@JoinColumn
注解外面 name 示意多方中配置的外键名称,referencedColumnName 为外键对应的双方主键。
@Data
@Entity
@Table(name = "banner_item")
public class BannerItem {
@Id
private Integer id;
private String img;
private Integer bannerId;
private String name;
}
下面为双方配置,没有什么非凡的。
双向一对多
@Data
@Entity
@Table(name = "banner")
public class Banner {
@Id
private Integer id;
private String name;
@OneToMany(fetch = FetchType.LAZY, mappedBy="banner")
private List<BannerItem> items;
}
双向时双方不须要 @JoinColumn 注解,须要在 @OneToMany 上增加 mappedBy 属性指明多方的映射属性。
@Data
@Entity
@Table(name = "banner_item")
public class BannerItem {
@Id
private Integer id;
private String img;
private Integer bannerId;
private String name;
@ManyToOne
@JoinColumn(name="bannerId")
private Banner banner;
}
多方的注解应用 @ManyToOne,标注在映射双方的属性上,同时须要加上 @JoinColumn 注解指明外键。