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

  • 相关阅读:
    嵌入式系统WinCE下应用程序GUI界面开发【转】
    pidstat 命令详解
    shell脚本检查是否存在tun0虚拟网卡,若不不存在服务器更改port,并重启服务器,客户端修改port,并重新启动客户端
    阿里云k8s部署zookeeper集群
    Kubernetes StatefulSet
    dubbo-admin管理平台搭建
    k8s pv,pvc无法删除问题
    Linux配置AndroidSDK&Jenkins远程部署
    CentOS的vsftp修改默认配置路径方法
    Java语法糖3:泛型
  • 原文地址:https://www.cnblogs.com/SaraMoring/p/5617562.html
Copyright © 2020-2023  润新知