zoukankan      html  css  js  c++  java
  • EJB3 jpa 数据库表的映射关系

    1)多对一映射关系(单向)

         使用外键关联,在外键的选取上以多的一方为主,即外键要在多的一方体现出来

    @Entity
    public class Company implements Serializable{
        @Id
        @Column(name = "c_id")
        private int id;
    
        private String name;
    }
    @Entity
    public class Employee implements Serializable {
    
        @Id
        @Column(name="e_id")
        private int id;
        
        private String name;
        
        @ManyToOne
        @JoinColumn(name = "c_id")
        private Company company;
    }

    2)一对多

        1.单向关联(以一的一方为主,即一对多关系要体现在一的一方)

          创建中间表,以两张表的id字段为内容(hibernate的生成策略:在多的一方生成一个外键)

    @Entity
    public class Company implements Serializable{
        @Id
        @Column(name = "c_id")
        private int id;
    
        private String name;
        
        @OneToMany
        private Set<Employee> employee;
    }
    @Entity
    public class Employee implements Serializable {
    
        @Id
        @Column(name="e_id")
        private int id;
        
        private String name;
    }

         2.双向关联

           不创建中间表,以在多的一方保存一个外键作为记录,体现一对多

           **与单向不同的是,双向关联必须要在一的一方定义mappedby,指向多的一方

    @Entity
    public class Company implements Serializable{
        @Id
        @Column(name = "c_id")
        private int id;
    
        private String name;
        
        @OneToMany(mappedBy="companys")
        private Set<Employee> employees;
    @Entity
    public class Employee implements Serializable {
    
        @Id
        @Column(name="e_id")
        private int id;
        
        private String name;
        @ManyToOne
        private Company companys;
    }

    3)一对一

        1.一对一主键关联(生成的表没有任何外加字段,也没有中间表,以ID的约束为主键)

    @Entity
    public class Company implements Serializable{
        @Id
        @Column(name = "c_id")
        private int id;
    
        private String name;
        
        @OneToOne
        @PrimaryKeyJoinColumn
        private Boss boss;
    }
    @Entity
    public class Boss {
    
        @Id
        private int id;
        
        private String name;
        
        @OneToOne(mappedBy="boss")
        private Company company;
        
    }

         2.一对一外键关联(在主的一方A加入一个外键,并且该外键唯一,而在另一方B同样引入该规则,但不产生外键,仅使A的一方的主键也唯一)

    @Entity
    public class Company implements Serializable{
        @Id
        @Column(name = "c_id")
        private int id;
    
        private String name;
        
        @OneToOne
        @JoinColumn(name="boss_id" ,unique=true)
        private Boss boss;
        
    
    }
    @Entity
    public class Boss {
    
        @Id
        private int id;
        
        private String name;
        
        @OneToOne(mappedBy="boss")
        private Company company;
        
    }

       

  • 相关阅读:
    oracle的增删改查语句
    Oracle Rac11g 学习笔记
    怎么个下载别人网站上的字体icon图标fonts文件
    APICloud Studio 3和Apploader真机同步,同一个wifi却一直提示连接不到
    c#发qq邮箱,QQ邮箱当中开启“POP3/SMTP服务”获取授权码
    微信支付异步回调不返回xml,微信会重复多次异步通知
    阿里云C磁盘拓容,IIS日志记录开启关闭
    jsapi微信支付
    c#.Net手机网站对接支付宝接口对接全流程说明
    无法找到列 7 程序遍历超过Excel列数
  • 原文地址:https://www.cnblogs.com/welv/p/5065266.html
Copyright © 2011-2022 走看看