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.classnew Long(1));
        System.out.println(    add.getAddress().getAddress2().getId());
    ;

 

qq  81553652 聯繫我

 

 

發佈了35 篇原創文章 · 獲贊 0 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章