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;
        
    }

       

  • 相关阅读:
    WCF中的序列化[下篇]
    WCF中的序列化[上篇]
    SET TRANSACTION ISOLATION LEVEL 详解
    深入探讨数据仓库建模与ETL的实践技巧
    用SQL语句添加删除修改字段等操作
    WCF数据契约与序列化
    在SQL Server中使用检查约束来验证数据
    C#线程同步的几种方法[转]
    Linq的Join用法
    测试wlm代码高亮插件
  • 原文地址:https://www.cnblogs.com/welv/p/5065266.html
Copyright © 2011-2022 走看看