0
点赞
收藏
分享

微信扫一扫

Hibernate一对一外键双向关联(Annotation配置篇)



Hibernate一对一外键双向关联(Annotation配置篇)_java


Husband.java 
package  com.one2one.bean;

import  javax.persistence.CascadeType;
import  javax.persistence.Column;
import  javax.persistence.Entity;
import  javax.persistence.GeneratedValue;
import  javax.persistence.GenerationType;
import  javax.persistence.Id;
import  javax.persistence.OneToOne;
import  javax.persistence.Table;

@Entity
@Table(name = " husband " ,catalog = " Hibernate_One2One_fk " )
public   class  Husband {
    
     private   int  id;
     private  String name;
     private  Wife wife;
    @Id
    @Column(name = " id " )
    @GeneratedValue(strategy = GenerationType.AUTO)
     public   int  getId() {
         return  id;
    }
     public   void  setId( int  id) {
         this .id  =  id;
    }
    @Column(name = " name " )
     public  String getName() {
         return  name;
    }
     public   void  setName(String name) {
         this .name  =  name;
    }
    @OneToOne(cascade = CascadeType.ALL,mappedBy = " husband " )
     public  Wife getWife() {
         return  wife;
    }
     public   void  setWife(Wife wife) {
         this .wife  =  wife;
    }
    
}
Wife.java 
package  com.one2one.bean;

import  javax.persistence.CascadeType;
import  javax.persistence.Column;
import  javax.persistence.Entity;
import  javax.persistence.GeneratedValue;
import  javax.persistence.GenerationType;
import  javax.persistence.Id;
import  javax.persistence.JoinColumn;
import  javax.persistence.OneToOne;
import  javax.persistence.Table;

@Entity
@Table(name = " wife " ,catalog = " Hibernate_One2One_fk " )
public   class  Wife {
    
     private   int  id;
     private  String name;
     private  Husband husband;
    @Id
    @Column(name = " id " )
    @GeneratedValue(strategy = GenerationType.AUTO)
     public   int  getId() {
         return  id;
    }
     public   void  setId( int  id) {
         this .id  =  id;
    }
    @Column(name = " name " )
     public  String getName() {
         return  name;
    }
     public   void  setName(String name) {
         this .name  =  name;
    }
    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = " husband_id " )
     public  Husband getHusband() {
         return  husband;
    }
     public   void  setHusband(Husband husband) {
         this .husband  =  husband;
    }
    
}

导出的sql 
create   table  Hibernate_One2One_fk.husband (
        id  integer   not   null  auto_increment,
        name  varchar ( 255 ),
         primary   key  (id)
    )

     create   table  Hibernate_One2One_fk.wife (
        id  integer   not   null  auto_increment,
        name  varchar ( 255 ),
        husband_id  integer ,
         primary   key  (id)
    )

     alter   table  Hibernate_One2One_fk.wife 
         add   index  FK37AF119039AEDD (husband_id), 
         add   constraint  FK37AF119039AEDD 
         foreign   key  (husband_id) 
         references  Hibernate_One2One_fk.husband (id)

测试代码 
@Test
     public   void  save(){
        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();
        }
    }
    
    @Test
     public   void  select(){
        Session session = HibernateSessionFactory.getSession();
        Husband husband = (Husband) session.get(Husband. class ,  1 );
        System.out.println(husband.getName());
        System.out.println(husband.getWife().getName());
    }

举报

相关推荐

0 条评论