EJB3 jpa 数据库表的映射关系
2015-12-21 23:26
281 查看
1)多对一映射关系(单向)
使用外键关联,在外键的选取上以多的一方为主,即外键要在多的一方体现出来
2)一对多
1.单向关联(以一的一方为主,即一对多关系要体现在一的一方)
创建中间表,以两张表的id字段为内容(hibernate的生成策略:在多的一方生成一个外键)
2.双向关联
不创建中间表,以在多的一方保存一个外键作为记录,体现一对多
**与单向不同的是,双向关联必须要在一的一方定义mappedby,指向多的一方
3)一对一
1.一对一主键关联(生成的表没有任何外加字段,也没有中间表,以ID的约束为主键)
2.一对一外键关联(在主的一方A加入一个外键,并且该外键唯一,而在另一方B同样引入该规则,但不产生外键,仅使A的一方的主键也唯一)
使用外键关联,在外键的选取上以多的一方为主,即外键要在多的一方体现出来
@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; }
相关文章推荐
- Memcached入门
- Oracle数据类型及函数
- oracle服务器版安装
- kali 2.0 msf连接数据库问题
- 数据库锁
- 数据库操作CURD
- SQLite、Cursor简单使用
- 数据库基础
- MySQL命令大全
- mongodb之replSet复制集
- MySQL 分区表
- oracle密码解锁
- 配置mysql 问题解决
- Sybase如何如在isql查看proc的内容和table各个字段的详细信息
- MySQL基本
- oracle11g安装完成在cmd命令行使用sqlplus登录时提示:ORA-12560: TNS: 协议适配器错误 的解决办法
- Ubuntu 安装mysql和简单操作
- mysql字符串处理例子
- SQLite
- Redhat 6.5 安装Oracle11g