@ManyToMany
Board表實體類
@Entity @Cache(usage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) @Table(name="t_board") public class Board extends BaseDomain { private int boardId; private Set<User> users=new HashSet<User>(); @Id @GeneratedValue(strategy=GenerationType.IDENTITY) @Column(name="board_id") public int getBoardId() { return boardId; } public void setBoardId(int boardId) { this.boardId = boardId; } @ManyToMany(cascade={CascadeType.PERSIST,CascadeType.MERGE}, mappedBy = "manBoards", fetch = FetchType.LAZY) public Set<User> getUsers() { return users; } public void setUsers(Set<User> users) { this.users = users; } }
User表實體類
1 @Entity 2 @Cache(usage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) 3 @Table(name="t_user") 4 public class User extends BaseDomain { 5 6 private int userId; 7 private Set<Board> manBoards=new HashSet<Board>(); 8 9 @Id 10 @GeneratedValue(strategy = GenerationType.IDENTITY) 11 @Column(name = "user_id") 12 public int getUserId() { 13 return userId; 14 } 15 16 public void setUserId(int userId) { 17 this.userId = userId; 18 } 19 20 @ManyToMany(cascade={CascadeType.MERGE,CascadeType.PERSIST},fetch=FetchType.EAGER) 21 @JoinTable(name="t_board_manager",joinColumns={@JoinColumn(name="user_id")},inverseJoinColumns={@JoinColumn(name="board_id")}) 22 public Set<Board> getManBoards() { 23 return manBoards; 24 } 25 26 public void setManBoards(Set<Board> manBoards) { 27 this.manBoards = manBoards; 28 } 29 30 }
User和Board是多對多映射關系,用@ManyToMany注釋標注。
在Board類中指定我們這個users的集合是映射到User類里面的manBoards屬性列。
在User中用@JoinTable指定中間表,並為該表添加了相關列,其中joinColumns添加該屬性所在User表中的主鍵user_id,inverseJoinColumns添加Board表中的主鍵board_id。