一对一关联映射(注解)
@one-to-one可选属性
name:映射类属性的名字
class:映射的目标类
cascade:设置操作中的级联策略 可选值为 all所有操作情况均进行级联、none所有操作情况均不进行级联、save-update执行更新操作时级联、delete执行删除操作时级联
constrained:表明当前类对应的表与被关联的表之间是否存在着外键约束 默认值为false
fetch:设置抓取数据的策略 可选值为 join外连接抓取、select序列选择抓取
property-ref:设置关联类的属性名,此属性和本类的主键相对应 默认值为关联类的主键
access:Hibernate访问这个属性的策略 默认值为property
formula:绝大多数一对一关联都指向其实体的主键。在某些情况下会指向一个或多个字段或是一个表达式,此时可用一个SQL公式来表示
lazy:指定是否采用延迟加载及加载策略 默认值为proxy通过代理进行关联 可选值为 true此对象采用延迟加载并在变量第一次被访问时抓取、false此关联对象不采用延迟加载
entity-name:被关联类的实体名
基于主键的一对一关联映射注解
public class Employee{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer id;
private String name;
@OneToOne
@PrimaryKeyJoinColumn
private Address address;
. . .
}
public class Address{
@Id //不配置主键生成方式以便使用主表的主键生成
private Integer id;
private String address;
@OneToOne
@PrimaryKeyJoinColumn
private Employee employee;
. . .
}
基于外键的一对一关联映射注解
@Entity
@Table(name=”t_employee”)
public class Employee{
private Integer id;
private String name;
@OneToOne(cascade={CascadeType.PERSIST,CascadeType.REFRESH})
private Address address;
. . .
}
public class Address{
private Integer id;
private String address;
@ManyToOne(cascade=CascadeType.PERSIST)
@JoinColumn(unique=true)
private Employee employee;
. . .
}