Silmon 发表于 2013-1-27 05:09:34

Hibernate一对一关联关系

一.主键关联
关系表
create table person(p_id varchar(32) primary key,p_name varchar(20));create table card(c_id varchar(32) primary key,c_num varchar(30),foreign key(c_id) references person(p_id)); 
xml文件
<class name="po.onetoone.Person" table="person" catalog="orm"><id name="PId" type="java.lang.String"><column name="p_id" length="32" /><generator class="uuid.hex" /></id><property name="PName" type="java.lang.String"><column name="p_name" length="20" /></property><one-to-one name="card" class="po.onetoone.Card" cascade="all"outer-join="false"></one-to-one></class><class name="po.onetoone.Card" table="card" catalog="orm"><id name="CId" type="java.lang.String"><column name="c_id" length="32" /><generator class="foreign"><param name="property">person</param></generator></id><property name="CNum" type="java.lang.String"><column name="c_num" length="30" /></property><one-to-one name="person" class="po.onetoone.Person"constrained="true"></one-to-one></class> 
DAO文件
package dao;import org.hibernate.Query;import org.hibernate.Session;import po.onetoone.Card;import po.onetoone.Person;import config.HibernateSessionFactory;/** * 一对一关联-->主键关联 ** @author Simon **/public class CardDAO {public void insert(String pName, String cNum) {// 测试添加Session session = null;try {session = HibernateSessionFactory.getSession();Person person = new Person();Card card = new Card();person.setCard(card);person.setPName(pName);card.setPerson(person);card.setCNum(cNum);session.beginTransaction();session.save(person);session.beginTransaction().commit();session.close();} catch (Exception e) {// TODO: handle exceptionif (session != null) {session.close();}}}public void delete(String pName) {// 测试删除Session session = null;try {session = HibernateSessionFactory.getSession();Query query = session.createQuery("from Person where PName=?");query.setString(0, pName);if (query.list().size() != 0) {Person person = (Person) query.list().get(0);session.beginTransaction();session.delete(person);session.beginTransaction().commit();session.close();} else {System.out.println("Null");}} catch (Exception e) {// TODO: handle exceptionif (session != null) {session.close();}}}public void select(String pName) {// 测试查寻Session session = null;try {session = HibernateSessionFactory.getSession();session.beginTransaction();Query query = session.createQuery("from Person where PName=?");query.setString(0, pName);if (query.list().size() != 0) {Person person = (Person) query.list().get(0);System.out.println(person.getPName() + "的卡号为:"+ person.getCard().getCNum());} else {System.out.println("null");}session.beginTransaction().commit();session.close();} catch (Exception e) {// TODO: handle exceptionif (session != null) {session.close();}}}public void update(String pName, String reNum) {// 测试修改Session session = null;try {session = HibernateSessionFactory.getSession();session.beginTransaction();Query query = session.createQuery("from Person where PName=?");query.setString(0, pName);if (query.list().size() != 0) {Person person = (Person) query.list().get(0);Card card = person.getCard();card.setCNum(reNum);session.saveOrUpdate(person);System.out.println(pName + "的卡号修改为:" + reNum);} else {System.out.println("null");}session.beginTransaction().commit();session.close();} catch (Exception e) {// TODO: handle exceptionif (session != null) {session.close();}}}public static void main(String[] args) {// new CardDAO().insert("p2","c2");// new CardDAO().delete("p1");// new CardDAO().select("p2");new CardDAO().update("p2", "c22244");}}二.唯一外键关联
 
create table simon.person(    p_id varchar2(32) primary key,    p_name varchar2(20),    p_address varchar2(40),    p_date date    )    create table simon.card(    c_id varchar2(32) primary key,    c_balance number(6,2),    c_date date,    f_p_id varchar2(32) unique,    foreign key(f_p_id) references simon.person(p_id)    ) 配置文件
<class name="onetoone.Card" table="CARD" schema="SIMON">      <id name="CId" type="java.lang.String">            <column name="C_ID" length="32" />            <generator class="uuid.hex"></generator>      </id>                <property name="CBalance" type="java.lang.Double">            <column name="C_BALANCE" precision="6" />      </property>      <property name="CDate" type="java.util.Date">            <column name="C_DATE" length="7" />      </property>      <many-to-one name="person" class="onetoone.Person"column="f_p_id" cascade="all" unique="true">         </many-to-one>    </class> <class name="onetoone.Person" table="PERSON" schema="SIMON">      <id name="PId" type="java.lang.String">            <column name="P_ID" length="32" />            <generator class="uuid.hex"></generator>      </id>      <property name="PName" type="java.lang.String">            <column name="P_NAME" length="20" />      </property>      <property name="PAddress" type="java.lang.String">            <column name="P_ADDRESS" length="40" />      </property>      <property name="PDate" type="java.util.Date">            <column name="P_DATE" length="7" />      </property>      <one-to-one name="card" class="onetoone.Card"property-ref="person" cascade="all">                </one-to-one>    </class>
页: [1]
查看完整版本: Hibernate一对一关联关系