Hibernate -- A unidirectional one-to-one association on a foreign key
at sometime we usually need to create two tables that one table relate another.Such as a husband only
have a wife. So how can I design relationship like this.In programming, The type of this relationship
named “unidirectional one-to-one association”.
How to implement this relationship with hibernate?
example for husband and wife.
When create object husband and wife, you can relate two object like this:
The Hasband object:
1: @Entity
2: public class Husband {
3: private int id;
4: private String name;
5: private Wife wife;
6: @Id
7: @GeneratedValue
8: public int getId() {
9: return id;
10: }
11: public void setId(int id) {
12: this.id = id;
13: }
14: public String getName() {
15: return name;
16: }
17: public void setName(String name) {
18: this.name = name;
19: }
20: @OneToOne
21: @JoinColumn(name="wifeId")
22: public Wife getWife() {
23: return wife;
24: }
25: public void setWife(Wife wife) {
26: this.wife = wife;
27: }
28: }
The Wife object:
1: @Entity
2: public class Wife {
3: private int id;
4: private String name;
5: @Id
6: @GeneratedValue
7: public int getId() {
8: return id;
9: }
10: public void setId(int id) {
11: this.id = id;
12: }
13: public String getName() {
14: return name;
15: }
16: public void setName(String name) {
17: this.name = name;
18: }
19:
20: }
We use annotation configuration hibernate by default. So you saw the annotition like @Entity in code.
Wife and Husband both are used @Entity.It means that object will mapping to database.
The getId() method in Wife and Husband both are used @Id and @GeneratedValue
The getWife() method in Husband object has annotation like this:
@OneToOne
@JoinColumn(name="wifeId")
Then, the column which is named wifeId wille be created.
So, Use annotation is so simple. that;s all.
Do from that we can get create table SQL like this:
1: create table Husband (
2: id integer not null auto_increment,
3: name varchar(255),
4: wifeId integer,
5: primary key (id)
6: )
7: 2014-1-11 14:46:41 org.hibernate.tool.hbm2ddl.SchemaExport perform
8:
9:
10: create table Wife (
11: id integer not null auto_increment,
12: name varchar(255),
13: primary key (id)
14: )
15:
16: alter table Husband
17: add constraint FK_kruq9jfxa0jrc2od8dbh09mia
18: foreign key (wifeId)
19: references Wife (id)
Finally , Talk about xml configure. When use xml to configure hibernate more trouble than use annotations:
You need write like this in xml file:
<many-to-one name="wife" column="wifId" unique="true" ></many-to-one>
Hibernate -- A unidirectional one-to-one association on a foreign key的更多相关文章
- hibernate部分源码解析and解决工作上关于hibernate的一个问题例子(包含oracle中新建表为何列名全转为大写且通过hibernate取数时如何不用再次遍历将列名(key)值转为小写)
最近在研究系统启动时将数据加载到内存非常耗时,想着是否有办法优化!经过日志打印测试发现查询时间(查询时间:将数据库数据查询到系统中并转为List<Map>或List<*.Class& ...
- Hibernate级联删除时:Cannot delete or update a parent row: a foreign key constraint fails异常
在删除主表数据时,报了一个异常 Cannot delete or update a parent row: a foreign key constraint fails 原因是主表中还包含字表的数据, ...
- hibernate 中文文档
转载:http://blog.csdn.net/kevon_sun/article/details/42850387 Hibernate Annotations 参考文档 3.2.0 CR1 目录 前 ...
- eclipse中hibernate和mybatis中xml配置文件的没有标签提醒解决方法
当我们使用eclipse编写Mybatis或hibernate的xml文件时,面对众多标签的配置文件,却没有自动提醒,对于工作和学习都十分不方便. 之所以没有自动提醒,是因为dtd文件没有加载成功. ...
- hibernate学习(一)配置,导包
框架的作用 学过javaWeb基础的已经对web层 jsp servlet ,service 层 ,dao层的jdbc .DBUtils 有了很深的了解 并编写代码实现某种功能 为了提高开发 ...
- hibernate 多对多(many-to-many)
多对多(many-to-many):在操作和性能方面都不太理想,所以多对多的映射使用较少,实际使用中最好转换成一对多的对象模型:hibernate会为我们创建中间关联表,转换成两个一对多. 1. E- ...
- [Hibernate系列—] 3. 映射文件和使用SchemaExport制作自己主动Schema
自己定义映射文件 这里的映射文件指的是相应到数据库表的xml 的定义文件. 相应的每一个数据库表栏位, 能够定义的属性有: 属性名 类型 Description length number 栏位的长度 ...
- Hibernate的dtd文件和properties文件
hibernate-configuration-3.0.dtd <!-- Hibernate file-based configuration document. <!DOCTYPE hi ...
- Struts2+Spring+Hibernate框架整合总结详细教程
一.SSH三大框架知识总结 Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架.其全新的Struts 2的体系结构与S ...
随机推荐
- android隐藏底部虚拟键Navigation Bar实现全屏
隐藏底部虚拟键Navigation Bar实现全屏有两种情况 第一种:始终隐藏,触摸屏幕时也不出现 解决办法:同时设置以下两个参数 View.SYSTEM_UI_FLAG_HIDE_NAVIGATIO ...
- jdk安装和环境变量配置
jdk的安装和环境变量配置每次换新环境都在做,但是每次都没有认真去想是怎么做的,反正每次打开百度搜索照做就是.这次整理一下,也顺便理清一下其中的原理. 1.第一步当然就是下载jdk,我这边下载的是jd ...
- SQL 统计整个服务器上各个数据库占用的空间
create procedure [dbo].[P__SpaceUsedView]asbegin if not exists (select 0 from tempdb..sysobjects whe ...
- github简单使用教程
github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开.对于一般人来说公共仓库就已经足够了,而且我们也没多少代码来管理,O(∩_∩)O ...
- 2-2. Initializing Objects with Initializer Lists
Using Uniform Initialization to Construct a vector #include <iostream> #include <vector> ...
- 数据库执行sql报错Got a packet bigger than 'max_allowed_packet' bytes及重启mysql
准备在mysql上使用数据库A,但mysql5经过重装后,上面的数据库已丢失,只得通过之前备份的A.sql重新生成数据库A. 1.执行sql报错 在执行A.sql的过程中,出现如下错误:Got a p ...
- FreeMarker标签与使用
模板技术在现代的软件开发中有着重要的地位,而目前最流行的两种模板技术恐怕要算freemarker和velocity了,webwork2.2对两者都有不错的支持,也就是说在webwork2中你可以随意选 ...
- LINUX 如何开放端口和关闭端口/jps/sudo命令
1 在java的根目录下用java的jps查看:============================================================================ ...
- TCP/IP协议和HTTP协议 浩哥指教
TCP和IP在HTTP协议的上层,HTTP算是应用层,IP协议建立的是电脑跟电脑之间的联系,具体过程是,物理上,通过网线,解析MAC地址,到达路由,路由告诉数据将要去哪里,对方电脑通过NDS解析,解析 ...
- 用python画xy散点图
import matplotlib.pyplot as plt plt.plot([1,2,3],[4,5,6],'ro') plt.show()#这个智障的编辑器 这样的话,就可以画一个散点图,图中 ...