package com.bjpowernode.hibernate;
import org.hibernate.Session;
import junit.framework.TestCase;
public class One2OneTest extends TestCase {
public void testSave1() {
Session session = null;
try {
session = HibernateUtils.getSession();
session.beginTransaction();
IdCard idCard = new IdCard();
idCard.setCardNo("1111111111111111");
Person person = new Person();
person.setName("张三");
// 建立关联
person.setIdCard(idCard);
// 没有抛出TransientObjectException
// 是由一对一关联映射的特性决定的,它必须先保存关联对象IdCard
// 这样它采用foreign映射策略才能取得关联对象的标识
// 也就是它默认了cascade属性
session.save(person);
session.getTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
session.getTransaction().rollback();
} finally {
HibernateUtils.closeSession(session);
}
}
public void testSave2() {
Session session = null;
try {
session = HibernateUtils.getSession();
session.beginTransaction();
IdCard idCard = new IdCard();
idCard.setCardNo("1111111111111111");
Person person = new Person();
person.setName("张三");
// 建立关联
person.setIdCard(idCard);
// 只能将IdCard保存,不能将Person保存
// 因为关系的维护端在Person端,IdCard不知道Person的存在
session.save(idCard);
session.getTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
session.getTransaction().rollback();
} finally {
HibernateUtils.closeSession(session);
}
}
public void testLoad1() {
Session session = null;
try {
session = HibernateUtils.getSession();
session.beginTransaction();
Person person = (Person) session.load(Person.class, 1);
System.out.println("person.name=" + person.getName());
System.out.println("person.cardNo="
+ person.getIdCard().getCardNo());
session.getTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
session.getTransaction().rollback();
} finally {
HibernateUtils.closeSession(session);
}
}
}
4.一对一单向主键关联(人对身份证) 测试
最新推荐文章于 2016-10-23 05:17:16 发布