JPA 一對多單向關聯和雙向關聯(沒有外鍵的情況)

假設我有兩個表,一個機構表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維護關聯字段,至於原理機制各位自己去發覺,本人也只是項目中應用。總結下來。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章