JPA關系映射之many-to-many


@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。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM