一对一关联映射(注解)


@one-to-one可选属性

  1. name:映射类属性的名字

  2. class:映射的目标类

  3. cascade:设置操作中的级联策略 可选值为 all所有操作情况均进行级联、none所有操作情况均不进行级联、save-update执行更新操作时级联、delete执行删除操作时级联

  4. constrained:表明当前类对应的表与被关联的表之间是否存在着外键约束 默认值为false

  5. fetch:设置抓取数据的策略 可选值为 join外连接抓取、select序列选择抓取

  6. property-ref:设置关联类的属性名,此属性和本类的主键相对应 默认值为关联类的主键

  7. access:Hibernate访问这个属性的策略 默认值为property

  8. formula:绝大多数一对一关联都指向其实体的主键。在某些情况下会指向一个或多个字段或是一个表达式,此时可用一个SQL公式来表示

  9. lazy:指定是否采用延迟加载及加载策略 默认值为proxy通过代理进行关联 可选值为 true此对象采用延迟加载并在变量第一次被访问时抓取、false此关联对象不采用延迟加载

  10. 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;

              .  .  .

     }