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. Java 增强 for 循环

    Java 增强 for 循环 Java5 引入了一种主要用于数组的增强型 for 循环. Java 增强 for 循环语法格式如下: for(声明语句 : 表达式) { //代码句子 } 声明语句:声 ...

  2. 揭开AutoRun功能的神秘面纱

    有很多光盘放入光驱就会自动运行,它们是怎么做到的呢?光盘一放入光驱就会自动被执行,主要依靠两个文件,一是光盘上的AutoRun.inf文件,另一个是操作系统本身的系统文件之一的Cdvsd.vxd.Cd ...

  3. underscore chain

    //可以在面向对象或者函数的风格下使用Underscore_.map([1, 2, 3], function(n){ return n * 2; }); //一般习惯用这种 _([1, 2, 3]). ...

  4. springmvc 孔浩

    modelAttribute属性指定该form绑定的是哪个Model,当指定了对应的Model后就可以在form标签内部其 它表单标签上通过为path指定Model属性的名称来绑定Model中的数据了 ...

  5. date(): It is not safe to rely on the system’s timezone settings.

    在执行php脚本时出现的错误: date(): It is not safe to rely on the system’s timezone settings.You are *required* ...

  6. 四则运算(Java)--温铭淇,付夏阳

    GitHub项目地址: https://github.com/fxyJAVA/Calculation 四则运算项目要求: 程序处理用户需求的模式为: Myapp.exe -n num -r size ...

  7. Android-卖票案例static-不推荐此方式

    需求描述:四个窗口一起卖票,把10张票卖完,不许多卖 先看一个错误的案例: package android.java.thread06; /** * 售票线程 */ class Booking ext ...

  8. JPA注解指南

    PA注解持久化类很方便,需要jar包:ejb3-persistence.jar.我用以下三个类来说明用法. @SuppressWarnings("serial") @Entity ...

  9. jenkins 后台程序运行

    # 背景 jenkins持续集成,需要任务后台执行(nohup执行)结果发现jenkins的job执行完后,看不到运行的进程 # 步骤 原因就是这么一个情况:Jenkins任务结束时候自动关掉了所有的 ...

  10. RabbitMQ基础入门篇

    下载安装 Erlang RabbitMQ 启动RabbitMQ管理平台插件 DOS下进入到安装目录\sbin,执行以下命令 rabbitmq-plugins enable rabbitmq_manag ...