Hibernate 注解(Annotations 二)一对一双向注解
注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。
接下来我们讲解一下一对一的注解配置:
上一篇文档已经详细解说了各个注解的含义和作用,在这里就不详细说明了,直接使用了。
1.创建两个实体类(Student类和IdCard类)
Student类
package cn.onetoone.entity; import javax.persistence.*; /**
* Created by accp on 2017/2/8.
*/
@Entity
@Table(name = "Student")
public class Student {
@Id
@GeneratedValue
private Integer sid;
@Column
private String sname;
@OneToOne(cascade = {CascadeType.ALL})
@JoinColumn(name = "cid")
private IdCard idCard; public Integer getSid() {
return sid;
} public void setSid(Integer sid) {
this.sid = sid;
} public String getSname() {
return sname;
} public void setSname(String sname) {
this.sname = sname;
} public IdCard getIdCard() {
return idCard;
} public void setIdCard(IdCard idCard) {
this.idCard = idCard;
}
}
IdCard类:
package cn.onetoone.entity; import javax.persistence.*; /**
* Created by accp on 2017/2/8.
*/
@Entity
@Table
public class IdCard {
@Id
@GeneratedValue
private Integer cid;
@Column
private String cname;
@OneToOne(mappedBy = "idCard")
//把维护权交给Student
private Student stu; public Integer getCid() {
return cid;
} public void setCid(Integer cid) {
this.cid = cid;
} public String getCname() {
return cname;
} public void setCname(String cname) {
this.cname = cname;
} public Student getStu() {
return stu;
} public void setStu(Student stu) {
this.stu = stu;
}
}
2.在大配置中需要添加:
<mapping class="cn.onetoone.entity.Student"/>
<mapping class="cn.onetoone.entity.IdCard"/>
3.测试类:
package cn.onetoone.test; import cn.onetoone.entity.IdCard;
import cn.onetoone.entity.Student;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.After;
import org.junit.Before;
import org.junit.Test; /**
* Created by accp on 2017/2/8.
*/
public class OneToOneTest {
Configuration cfg;
Session session;
Transaction tx;
@Before
public void mybefore(){
cfg=new Configuration().configure();
SessionFactory factory=cfg.buildSessionFactory();
session=factory.openSession();
tx=session.beginTransaction();
} @After
public void myafter(){
tx.commit();
session.close();
} @Test
public void add(){
Student stu=new Student();
stu.setSname("李四"); IdCard idCard=new IdCard();
idCard.setCid();
idCard.setCname("身份证"); stu.setIdCard(idCard);
session.save(idCard);
session.save(stu); }
}
生成的sql:
Hibernate:
insert
into
IdCard
(cname, cid)
values
(?, ?)
Hibernate:
insert
into
Student
(cid, sname, sid)
values
(?, ?, ?)
数据库数据:
Student表 IdCard表


Hibernate 注解(Annotations 二)一对一双向注解的更多相关文章
- Hibernate(六)一对一双向关联映射
在上次的博文Hibernate从入门到精通(五)一对一单向关联映射中我们讲解了一下一对一单向关联映射, 这次我们继续讲解一下与之对应的一对一双向关联映射. 一对一双向关联 与一对一单向关联映 射所不同 ...
- hibernate(六)一对一映射
关系映射是指对象之间的关系,并不是指数据库的关系,关系映射是解决当对象处于以下关系之一时,数据库表该如何映射的问题 (一)一对一单向外键关联 1.注解方式配置 创建一个Husband类和Wife类 H ...
- Hibernate 注解 (Annotations 三)多对一双向注解
注解(Annotation),也叫元数据.一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性,与类.接口.枚举是在同一个层次.它可以声明在包.类.字段.方法.局部变量.方法参数等的前面,用来 ...
- Hibernate 注解(Annotations 四)多对多双向注解
注解(Annotation),也叫元数据.一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性,与类.接口.枚举是在同一个层次.它可以声明在包.类.字段.方法.局部变量.方法参数等的前面,用来 ...
- 04-hibernate注解-一对一双向外键关联
一对一双向外键 1,主控方的配置同一对一单向外键关联. 2,@OneToOne(mappedBy="card") //被控方 @OneToOne(mappedBy="ca ...
- hibernate one-to-many many-to-one 双向注解
建表语句: DROP TABLE IF EXISTS `t_company`; CREATE TABLE `t_company` ( `companyId` ) unsigned NOT NULL A ...
- Hibernate中用注解配置一对多双向关联和多对一单向关联
Hibernate中用注解配置一对多双向关联和多对一单向关联 Hibernate提供了Hibernate Annotations扩展包,使用注解完成映射.在Hibernate3.3之前,需单独下载注解 ...
- 使用Hibernate注解Annotations进行对象映射的异常处理
通过Hibernate注解Annotations进行对象映射,想在Oracle数据库中自动创建表,代码如下: 实体类: import javax.persistence.Basic;import ja ...
- hibernate一对一双向外键关联
一对一双向外键关联:双方都持有对方的外键关联关系. 主控方和一对一单向外键关联的情况是一样的,主要的差异表现为,被空方需要添加: @OneToOne(mappedBy="card" ...
随机推荐
- P3366 (模板)最小生成树
2019-01-30 最小生成树基本算法 定义: 给定一个边带权的无向图G=(V,E),n=|V|,m=|E|,由V中全部n个定点和E中n-1条边构成的无向连通子图被称为G的一颗生成树. 边的权值之和 ...
- 扩展欧拉定理【洛谷P4139】 上帝与集合的正确用法
P4139 上帝与集合的正确用法 \(2^{2^{2^{\dots}}}\bmod p\) 卡最优解倒数第一祭. 带一下扩展欧拉定理就好了. code: #include <iostream&g ...
- 斐讯K2P通过配置文件开启telnet的原理分析
看过几篇教程之后我已经知道怎么备份固件了.但是现在有一个问题,我的本意是把K2P原机带的固件备份出来,用教程上的方法进行开启telnet.备份固件等操作是否会改变固件呢?下面我们来验证这个问题. Op ...
- JavaScript DOM编程艺术 笔记(二)语句操作
操作 var total = (1+4)*5; year = year +1; year++; var message = "i am" + "girl"; 是 ...
- 进阶篇:3)面向制造的设计DFM
本章目的:正确认识面向制造的设计-DFM. 1.DFM概念 DFM有两种描述是作者比较认可的. ①面向制造的设计(design for manufacturing简称DFM):指产品设计需要满足产品制 ...
- @PostConstruct和@PreConstruct注解
@PostConstruct和@PreConstruct.这两个注解被用来修饰一个非静态的void()方法.而且这个方法不能有抛出异常声明. @PostConstruct //方式1 public v ...
- orange1
- 引入background和background-size不显示图片
.bgLeft { position: absolute; left: -95px; background: url("../images/logo_1.png") left to ...
- Win32创建异形窗口
大家都见过在windows下各种气泡窗口.输入法窗口以及其他一些窗口,这些窗口看起来不像传统的windows窗那样,上面是标题栏,下面是窗口的客户区.这些窗口形状各异,可以是一个多边形,一幅图,甚至是 ...
- 问题记录——com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
最近在搞一个Spring boot + Mybatis + Mysql的项目,用Mybatis访问数据库时,报了如下的错误,先在网上搜索了,试了各种办法都不行, 奇葩的是,连接另外1个数据库又没问题. ...