一对一映射
假设一个人只能有一张ID,ID只能被一个人拥有
1.Person类
public class Person {
private String pid;
private String pname;
private Card card;
//省略get和set方法
}
2.Card类
public class Card {
private String pid;
private String cname;
private Person person;
//省略get和set方法
}
映射文件
1.Person
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2018-9-8 13:31:34 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
<class name="com.zking.entity.Person" table="PERSON">
<id name="pid" type="java.lang.String">
<column name="PID" />
<generator class="guid" />
</id>
<property name="pname" type="java.lang.String">
<column name="PNAME" />
</property>
<!--级联关系设置 all-delete-orphan--!>
<one-to-one name="card" class="com.zking.entity.Card"
cascade="all-delete-orphan"></one-to-one>
</class>
</hibernate-mapping>
2.Card
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2018-9-8 13:31:34 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
<class name="com.zking.entity.Card" table="CARD">
<id name="pid" type="java.lang.String">
<column name="PID" />
<generator class="foreign">
<param name="property">person</param>
</generator>
</id>
<property name="cname" type="java.lang.String">
<column name="CNAME" />
</property>
<one-to-one name="person" class="com.zking.entity.Person"></one-to-one>
</class>
</hibernate-mapping>
3.测试类
package com.zking.entity;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;
import com.zking.uitl.SessionFactoryUtils;
public class Temp {
Session session = SessionFactoryUtils.openSession();
Transaction transaction = session.beginTransaction();
@Test
public void add() {
Person p = new Person();
p.setPname("地方");
Card c = new Card();
c.setCname("呃呃呃");
//互设
p.setCard(c);
c.setPerson(p);
session.save(p);
transaction.commit();
}
@Test
public void delete() {
Person p = new Person();
Card c = new Card();
//两个id都要赋值 不然只会删除一个
p.setPid("2063cad2-b32c-11e8-85c7-80fa5b45e240");
c.setPid("2063cad2-b32c-11e8-85c7-80fa5b45e240");
p.setCard(c);
c.setPerson(p);
session.delete(p);
transaction.commit();
}
}
以上就是一对一的简答运用了