假設我有兩個表,一個機構表A,一個機構詳情表B,表A爲主表一的一方,表B爲維護表爲多的一方,在表B中沒有外鍵,但會有表A主鍵字段的冗餘記錄,
1jpa一對多單向關聯的設置
class A{
/** * A表id */ @Id @GeneratedValue @Column(name = "a_id") private Long aId;
/** * B集合 */ @OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY) @JoinColumn(name = "a_id",nullable = false,insertable = false,updatable = false) private List<B> bList;
}
class B{
@Column(name = "a_id")
private Long aId;
}
主表添加多的一方的集合,使用@OneToMany和@JoinColumn註解,其中@JoinColumn中name爲B表中冗餘的A主鍵字段名稱,B表不做任何配置,也沒有外鍵。
1jpa一對多雙向關聯的設置
class A{
/** * B集合 */ @JsonManagedReference @OneToMany(mappedBy = "a") private List<B> bList;
}
class B{
@ManyToOne @JoinColumn(name = "aId") @JsonBackReference private A a;
}
主表中用@OneTomany中的mappedBy維護雙向關係,維護表中用@ManyToOne和@JoinColumn維護關聯字段,至於原理機制各位自己去發覺,本人也只是項目中應用。總結下來。