1. 程式人生 > >JPA一對多單向

JPA一對多單向

相冊 length hashset 註解 rep val ring ade column

有兩種方式實現一對多的單向關聯。一種是在只使用@OneToMany來標識,這種方式是通過一張第三方表來保存關系。還有一種是使用@OneToMany和@JoinColumn來標註,這種方式是在多的一方(Book)的表中增加一個外鍵列來保存關系。


  第一種方式,通過一張第三方表來實現一對多的單向關聯:

  Author.java如下,需要註意private Set<Book> books = new HashSet<Book>()的註解。只是使用了@OneToMany。

@Entity @Table(name="author") public class Author { @Id @GeneratedValue private Long id; /**作者的名字*/ @Column(length=32) private String name; /**作者寫的書*/ @OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY) //級聯保存、更新、刪除、刷新;延遲加載 private Set<Book> books = new HashSet<Book>();

  

  Book.java如下,因為是單向的關聯,所以這個實體不需要加任何的關聯標識。

  

  只在Author實體中對private Set<Book> books = new HashSet<Book>()加上標註@OneToMany實現單向關聯。這樣就通過一個關聯表來實現這種關聯。生成數據庫表如下,會以Author的表名和下劃線和Book的表名生成一張表author_book來保存Author和Book的一對多單向映射。


技術分享圖片

技術分享圖片

第二種方式,通過在多方(Book)的表中增加一個外鍵列實現一對多的單向關聯。

  Author.java如下,需要註意private Set<Book> books = new HashSet<Book>()的註解。同時使用了@OneToMany和@JoinColumn。

技術分享圖片


技術分享圖片

技術分享圖片


JPA一對多單向