Hibernate一对一主键双向关联映射(xml配置)_xml


alter table wife 
        drop
alter table wife 
        drop 
        foreign key FK37AF11D67CB035

    drop table if exists husband

    drop table if exists wife

    create table husband (
        id integer not null auto_increment,
        name varchar(255),
        primary key (id)
    )

    create table wife (
        id integer not null,
        name varchar(255),
        primary key (id)
    )

    alter table wife 
        add index FK37AF11D67CB035 (id), 
        add constraint FK37AF11D67CB035 
        foreign key (id) 
        references husband (id)

实体 
Husband 

private int id; 
 private String name; 
 private Wife wife; 

Wife 
private int id; 
 private String name; 
 private Husband husband; 

Husband.hbm.xml 
<? xml version="1.0" encoding="UTF-8" ?> 
<! DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" > 
     < hibernate-mapping  package ="com.hibernate.one2one.bean" > 
         < class  name ="Husband"  table ="husband" > 
             < id  name ="id"  column ="id" > 
                 < generator  class ="native" ></ generator > 
             </ id > 
             < property  name ="name" ></ property > 
             < one-to-one  name ="wife"  cascade ="all"  class ="Wife" ></ one-to-one > 
         </ class > 
     </ hibernate-mapping >

Wife.hbm.xml 
<? xml version="1.0" encoding="UTF-8" ?> 
<! DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" > 
     < hibernate-mapping  package ="com.hibernate.one2one.bean" > 
         < class  name ="Wife"  table ="wife" > 
             < id  name ="id"  column ="id" > 
                 < generator  class ="foreign" > 
                     < param  name ="property" > husband </ param > 
                 </ generator > 
             </ id > 
             < property  name ="name" ></ property > 
             < one-to-one  name ="husband"  constrained ="true" ></ one-to-one > 
         </ class > 
     </ hibernate-mapping >
@Test
     public   void  insert(){
        Session session = HibernateSessionFactory.getSession();
        Transaction transaction = session.beginTransaction();
         try  {
            transaction.begin();
            Husband husband = new  Husband();
            husband.setName( " 小明 " );
            session.save(husband);
            Wife wife = new  Wife();
            wife.setName( " 如花 " );
            wife.setHusband(husband);
            session.save(wife);
            transaction.commit();
        }  catch  (HibernateException e) {
            e.printStackTrace();
            transaction.rollback();
        }
    }