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; }
EJB3 jpa 数据库表的映射关系的更多相关文章
- Activiti 5.17 实体对象与类和数据库表的映射
一.Activiti 5.17 mybatis的mapping文件声明映射的实体对象关系. <configuration><settings><settingname=& ...
- sql操作数据库(3)-->外键约束、数据库表之间的关系、三大范式、多表查询、事务
外键约束 在新表中添加外键约束语法: constraint 外键约束名称 foreign key(外键的字段名称) references 主表表名(主键字段名) 在已有表中添加外键约束:alter t ...
- jpa数据库表实体命名规则 Unknown column 'user0_.create_time' in 'field list'
数据库,表字段命名是驼峰命名法(createTime),Spring data jpa 在操作表的时候,生成的sql语句中却是create_time, 表字段不对照, Spring data jpa基 ...
- Spring Hibernate JPA 联表查询 复杂查询(转)
今天刷网,才发现: 1)如果想用hibernate注解,是不是一定会用到jpa的? 是.如果hibernate认为jpa的注解够用,就直接用.否则会弄一个自己的出来作为补充. 2)jpa和hibern ...
- Spring Hibernate JPA 联表查询 复杂查询
今天刷网,才发现: 1)如果想用hibernate注解,是不是一定会用到jpa的? 是.如果hibernate认为jpa的注解够用,就直接用.否则会弄一个自己的出来作为补充. 2)jpa和hibern ...
- hiberate 映射关系 详解
在我们平时所学的关系型数据库中,我们会大量处理表与表之间的关系,如果表比较多的话处理起来就比较繁琐了,但是hibernate给我们提供了很大的便利,这些便利让我们处理起来方便.我们所讲的源码地址:ht ...
- JAVA 自动生成对应数据库表的JPA代码工具
http://blog.csdn.net/zheng2008hua/article/details/6274659 关键词:JPA 数据库表代码自动生成,JPA代码生成 自动生成对应数据库表的 ...
- 数据库表结构设计方法及原则(li)
数据库设计的三大范式:为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式.范式是符合某一种设计要求的总结.要想设计一个结构合理的关系型数据库,必须满 ...
- hibernate笔记--使用注解(annotation)方式配置单(双)向多对一的映射关系
前面几篇都是介绍的用配置文件来实现实体类到数据库表的映射,这种方式是比较麻烦的,每一个pojo类都需要写一个相应的*.hbm.xml,无疑增加了很多代码量,不过也有优点就是利于维护,为了方便开发,Hi ...
随机推荐
- 【转载】不得不知道的Python字符串编码相关的知识
原文地址:http://www.cnblogs.com/Xjng/p/5093905.html 开发经常会遇到各种字符串编码的问题,例如报错SyntaxError: Non-ASCII charact ...
- HDU 2546 饭卡 (01背包问题)
题意:中文的吧,飘过~ 析:学过DP的都应该感觉到是动态规划吧,就是一个01背包问题,不同的是,这个题又加入一些新的条件,就是不满5元不能消费,过了5元即使超了也行(这个学校真不错,都可以预支),最后 ...
- UVa 11732 "strcmp()" Anyone? (左儿子右兄弟前缀树Trie)
题意:给定strcmp函数,输入n个字符串,让你用给定的strcmp函数判断字符比较了多少次. 析:题意不理解的可以阅读原题https://uva.onlinejudge.org/index.php? ...
- *C语言的小技巧
计算数组长度 ,,,,}; int Length=sizeof(a)/sizeof(int); 交换a和b的值,不借用辅助变量 a=a+b; b=a-b; a=a-b; 将0-9的字符转化为整数 '; ...
- vim 配置半透明
转载两个博客 链接一 链接二
- 主程序与DLL之间的全局变量问题
http://www.cnblogs.com/railgunman/archive/2010/11/29/1891200.html 主程序与DLL之间的全局变量问题 有几个朋友经常向我问题在DLL ...
- MVC4 项目开发日志(1)
最近一直在定义一个功能全面,层次结构分明的框架.一边学习一边应用.
- Android实现带下划线的EditText(BUG修正)
之前写了一个关于实现EditText显示下划线的例子,发现仍然存在一些问题,在此继续探索,原文链接:http://www.cnblogs.com/ayqy/p/3599414.html (零)另一个b ...
- easyui-layout系列之表单一(2)
表单在我们的开发过程非常的常见,easyUI给我们提供了非常方便快捷的表单开发工具,使用熟练可以大大的提高后台开发速度,非常有必要熟练掌握. 1.Textbox-文本框 扩展自$.fn.validat ...
- S11 day 96 RestFramework 之认证权限
一.设计一个简易的登录 1. 建立一个模型 class UserInfo(models.Model): username =models.CharField(max_length=) password ...