Hibernate annotations系列之双向一对一

Address.java 
package  one2one;

import  java.io.Serializable;

import  javax.persistence.CascadeType;
import  javax.persistence.GeneratedValue;
import  javax.persistence.GenerationType;
import  javax.persistence.Id;
import  javax.persistence.JoinColumn;
import  javax.persistence.OneToOne;
import  javax.persistence.PrimaryKeyJoinColumn;
import  javax.persistence.Table;
import  javax.persistence.TableGenerator;

import  org.hibernate.test.annotations.Passport;

@javax.persistence.Entity
public   class  Address  implements  Serializable {

    
private Long id;

    String name;

    Address2 address2;

    
public String getName() {
        
return name;
    }


    
public void setName(String name) {
        
this.name = name;
    }


    
public Address() {

    }


    @Id
/*    @TableGenerator(name = "empGen", allocationSize = 2000, initialValue = 100)*/
    @GeneratedValue
//    (strategy = GenerationType.TABLE, generator = "empGen")
    public Long getId() {
        
return id;
    }


    
public void setId(Long id) {
        
this.id = id;
    }


    @OneToOne(cascade 
= CascadeType.ALL)
    
/*@PrimaryKeyJoinColumn
    @JoinColumn(name = "Address2_ID") 
*/

    
public Address2 getAddress2() {
        
return address2;
    }


    
public void setAddress2(Address2 address2) {
        
this.address2 = address2;
    }


}

 

Address2.java

 

 

package  one2one;

import  java.io.Serializable;

import  javax.persistence.Entity;
import  javax.persistence.GeneratedValue;
import  javax.persistence.GenerationType;
import  javax.persistence.Id;
import  javax.persistence.OneToOne;

@Entity
public   class  Address2  implements  Serializable  {
    
private Long id;

    
private Address address;

    @Id
    @GeneratedValue
    
public Long getId() {
        
return id;
    }


    
public void setId(Long id) {
        
this.id = id;
    }


    @OneToOne(mappedBy 
= "address2")
    
public Address getAddress() {
        
return address;
    }


    
public void setAddress(Address address) {
        
this.address = address;
    }


}

两者通过 @OneToOne(cascade = CascadeType.ALL)  和

 @OneToOne(mappedBy = "address2")  进行一对一的双向关联。

测试代码:

 



    Session s 
=  HibernateUtil.getSession();

        s.beginTransaction();
Address ass 
=   new  Address();
        ass.setName(
" ssss " );
    
        Address2 ass2 
=   new  Address2();
        ass.setAddress2(ass2);
        ass2.setAddress(ass);
        
        
        
        
    

        s.persist(ass);

 

还有:

 

 

    Address2  add = (Address2)    s.load(Address2. class new  Long( 1 ));
        System.out.println(    add.getAddress().getAddress2().getId());
    ;

 

qq  81553652 联系我

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值