1.OneToOne共享主键
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;
/**
* @author lan 2010-8-26
* 主表
*/
@Entity
public class Body {
private Integer id;
private Heart heart;
private Integer age;
@Id
@GeneratedValue
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@OneToOne(cascade = CascadeType.ALL)
@PrimaryKeyJoinColumn
public Heart getHeart() {
return heart;
}
public void setHeart(Heart heart) {
this.heart = heart;
}
}
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;
/**
* @author lan 2010-8-26
* 从表
*/
@Entity
public class Heart {
private Integer id;
private Body body;
private Double weight;
@Id
@GenericGenerator(name = "fk", strategy = "foreign", parameters = @Parameter(name = "property", value = "body"))
@GeneratedValue(generator = "fk")
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@OneToOne(optional=false)
@PrimaryKeyJoinColumn(name="body_id")
public Body getBody() {
return body;
}
public void setBody(Body body) {
this.body = body;
}
}
2.OneToOne外键
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToOne;
/**
* @author lan
* 2010-8-26
* 主表
*/
@Entity
public class Passport {
private Integer id;
private String name;
private Customer owner;
@Id
@GeneratedValue
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@OneToOne(mappedBy="passport", cascade=CascadeType.ALL)
public Customer getOwner() {
return owner;
}
public void setOwner(Customer owner) {
this.owner = owner;
}
}
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
/**
* @author lan
* 2010-8-26
* 从表
*/
@Entity
public class Customer {
private Integer id;
private Passport passport;
@Id
@GeneratedValue
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@OneToOne
@JoinColumn(name="passport_id")
public Passport getPassport() {
return passport;
}
public void setPassport(Passport passport) {
this.passport = passport;
}
}