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

EJB3 jpa 数据库表的映射关系的更多相关文章

  1. Activiti 5.17 实体对象与类和数据库表的映射

    一.Activiti 5.17 mybatis的mapping文件声明映射的实体对象关系. <configuration><settings><settingname=& ...

  2. sql操作数据库(3)-->外键约束、数据库表之间的关系、三大范式、多表查询、事务

    外键约束 在新表中添加外键约束语法: constraint 外键约束名称 foreign key(外键的字段名称) references 主表表名(主键字段名) 在已有表中添加外键约束:alter t ...

  3. jpa数据库表实体命名规则 Unknown column 'user0_.create_time' in 'field list'

    数据库,表字段命名是驼峰命名法(createTime),Spring data jpa 在操作表的时候,生成的sql语句中却是create_time, 表字段不对照, Spring data jpa基 ...

  4. Spring Hibernate JPA 联表查询 复杂查询(转)

    今天刷网,才发现: 1)如果想用hibernate注解,是不是一定会用到jpa的? 是.如果hibernate认为jpa的注解够用,就直接用.否则会弄一个自己的出来作为补充. 2)jpa和hibern ...

  5. Spring Hibernate JPA 联表查询 复杂查询

    今天刷网,才发现: 1)如果想用hibernate注解,是不是一定会用到jpa的? 是.如果hibernate认为jpa的注解够用,就直接用.否则会弄一个自己的出来作为补充. 2)jpa和hibern ...

  6. hiberate 映射关系 详解

    在我们平时所学的关系型数据库中,我们会大量处理表与表之间的关系,如果表比较多的话处理起来就比较繁琐了,但是hibernate给我们提供了很大的便利,这些便利让我们处理起来方便.我们所讲的源码地址:ht ...

  7. JAVA 自动生成对应数据库表的JPA代码工具

    http://blog.csdn.net/zheng2008hua/article/details/6274659 关键词:JPA 数据库表代码自动生成,JPA代码生成     自动生成对应数据库表的 ...

  8. 数据库表结构设计方法及原则(li)

    数据库设计的三大范式:为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式.范式是符合某一种设计要求的总结.要想设计一个结构合理的关系型数据库,必须满 ...

  9. hibernate笔记--使用注解(annotation)方式配置单(双)向多对一的映射关系

    前面几篇都是介绍的用配置文件来实现实体类到数据库表的映射,这种方式是比较麻烦的,每一个pojo类都需要写一个相应的*.hbm.xml,无疑增加了很多代码量,不过也有优点就是利于维护,为了方便开发,Hi ...

随机推荐

  1. arduino uno r3 + SIM900 + USB打火机 实现电话触发点火

    需求来源 1.儿子过完年6岁,喜欢玩烟花,但是胆子小,于是我就负责点火,从年前26到大年初八,每天晚上要给儿子点鞭炮啊点鞭炮. 2.这边过年要打关门炮跟开门炮,大年初一凌晨还要起来帮老妈点鞭炮,说实在 ...

  2. not allowed to access to crontab because of pam configuration

    如果运行crontab如遇下面这样的错误: $ crontab -l You (zhangsan) are not allowed to access to (crontab) because of ...

  3. 201709025工作日记--更新UI方法

    1.handler+Thread 和 runOnUIThread 和 handler.post 方法 区别: 从实现原理上,两者别无二致,runOnUiThread也是借助Handler实现的.  对 ...

  4. (二分匹配 模板)过山车 -- hdu --2063

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=2063 http://acm.hust.edu.cn/vjudge/contest/view.action ...

  5. 201521123035-个人作业4——alpha阶段个人总结

    个人总结 在alpha 结束之后, 每位同学写一篇个人博客, 总结自己的alpha 过程: 第一部分 类别 具体技能和面试问题 现在的回答(大三) 语言 最拿手的计算机语言是一?,代码量多少?(偏前端 ...

  6. netty 原理

    netty 实现 1. 各组件之间的关系 每个ServerBootstrap与一个事件循环对象(一个线程)都会与一个Channel绑定,如NioServerSocketChannel 2. 如何绑定 ...

  7. alpha七天冲刺计划(更新ing)

    alpha七天冲刺计划 第一天: http://note.youdao.com/noteshare?id=ff0c24feec21b1d74a176a0d88815933 第二天: http://no ...

  8. 团队作业(HCL队)第三周—需求改进和系统分析

    2.需求&原型改进: 1.问题:游戏中坦克的移动和攻击怎么控制的? 改进: 在游戏中,我控制我方坦克,按下方向键坦克便向按下的方向移动,按下Z键,我方坦克发射炮弹.敌方坦克面向随机的方向移动, ...

  9. Java中的时间日期处理

    程序就是输入——>处理——>输出.对数据的处理是程序员需要着重注意的地方,快速.高效的对数据进行处理时我们的追求.其中,时间日期的处理又尤为重要和平凡,此次,我将把Java中的时间日期处理 ...

  10. Delphi事件的广播 转

    http://blog.sina.com.cn/s/blog_44fa172f0102wgs2.html 原文地址:Delphi事件的广播 转作者:MondaySoftware 明天就是五一节了,辛苦 ...