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;
}

}
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;
}

}

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());
;







































































Address2.java









































两者通过 @OneToOne(cascade = CascadeType.ALL) 和
@OneToOne(mappedBy = "address2") 进行一对一的双向关联。
测试代码:


















还有:



qq 81553652 联系我