1、创建实体类,代码如下:

代码清单1:

package learn.jpa.entity;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne; @Entity
public class Person { private int id;
private String name;
private IDCard idcard; public Person(){ } public Person(String name){
this.name = name;
} @OneToOne(optional=false,cascade=CascadeType.ALL)
@JoinColumn(name="idcard_id")
public IDCard getIdcard() {
return idcard;
}
public void setIdcard(IDCard idcard) {
this.idcard = idcard;
}
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
} @Column(length=10,nullable=false)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

代码清单2:

package learn.jpa.entity;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToOne; @Entity
public class IDCard { private int id;
private String cardno;
private Person person; public IDCard(){ } public IDCard(String cardno){
this.cardno = cardno;
} @OneToOne(mappedBy="idcard",cascade={CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REFRESH},
optional=false)
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
} @Column(length=18, nullable=false)
public String getCardno() {
return cardno;
}
public void setCardno(String cardno) {
this.cardno = cardno;
} }

2、测试代码:

package learn.jpa.test;

import static org.junit.Assert.*;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence; import learn.jpa.entity.IDCard;
import learn.jpa.entity.Person; import org.junit.Test; public class OneToOneTest { /**
* 测试数据库是否可以生成表
*/
@Test
public void test() {
EntityManagerFactory factory = Persistence.createEntityManagerFactory("learn_jpa");
factory.close();
} @Test
public void save(){
EntityManagerFactory factory = Persistence.createEntityManagerFactory("learn_jpa");
EntityManager em = factory.createEntityManager();
em.getTransaction().begin(); // 开启事务 Person person = new Person("hwl");
IDCard idcard = new IDCard("435034189809170123");
idcard.setPerson(person);
person.setIdcard(idcard);
em.persist(person);
em.getTransaction().commit();
em.close();
factory.close();
}
}

最新文章

  1. 简单的JavaScript互斥锁
  2. float包裹性与破坏性及清除浮动几种方法
  3. 大话设计模式C++版——原则和引言
  4. glusterFS的常用命令 (转)
  5. JavaScript 中有关数组对象的方法
  6. IT男的”幸福”生活"续6
  7. IIS7 .NET Runtime version 2.0.50727.5420 - 执行引擎错误(000007FEE77AAF0E) (80131506)
  8. eclipse启动tomcat错误:A Java Exception has occurred(转)
  9. 通过xib加载textfield的时候 发生 this class is not key value coding-compliant for the key textField. 情况怎么解决
  10. STL 自学
  11. 【原】EF简单使用
  12. Ibatis 3.0 之前使用的都是2.0 3.0与2.0的内容有很大的不同
  13. 定义正则new RegExp('abcd')
  14. idea创建多模块springboot项目
  15. php后台对接ios,安卓,API接口设计和实践完全攻略,涨薪必备技能
  16. 【bzoj5004】开锁魔法II 组合数学+概率dp
  17. 使用textutil进行文件格式转换
  18. Linux command line exercises for NGS data processing
  19. ubuntu samba
  20. Redis客户端基本命令

热门文章

  1. Groovy安装与入门实例
  2. Android IOS WebRTC 音视频开发总结(十二)-- sufaceview
  3. CentOS6.5下挂载NTFS格式的文件系统
  4. C puzzles详解【13-15题】
  5. [leetcode]_Path Sum I && II
  6. mariadb的explain分析及InnoDB存储引擎
  7. 短信接口调用以及ajax发送短信接口实现以及前端样式
  8. Yii 增删改查 测试记录
  9. DevExpress后置代码中初始化SQL数据源的方法
  10. 关键字替换排除HTML标签属性字符