• Hibernate注解配置1:1关联


    一对一

    使用 @OneToOne 注解可以建立实体Bean之间的一对一关系。一对一关系有3种情况。

    • 关联的实体都共享同样的主键。

    @Entity

    public class Body {

      @Id

      public Long getId() { return id; }

      @OneToOne(cascade = CascadeType.ALL)

      @PrimaryKeyJoinColumn

      public Heart getHeart() {

         return heart;

      }

      ...

    }

    @Entity

    public class Heart {

      @Id

      public Long getId() { ...}

    }

    通过@PrimaryKeyJoinColumn 注解定义了一对一的关联关系。

    • 其中一个实体通过外键关联到另一个实体的主键。注:一对一,则外键必须为唯一约束。

    @Entity

    public class Customer implements Serializable {

       @OneToOne(cascade = CascadeType.ALL)

       @JoinColumn(name="passport_fk")

       public Passport getPassport() {

       ...

    }

    @Entity

    public class Passport implements Serializable {

       @OneToOne(mappedBy = "passport")

       public Customer getOwner() {

       ...

    }

    通过@JoinColumn注解定义一对一的关联关系。如果没有@JoinColumn注解,则系统自动处理,在主表中将创建连接列,列名为:主题的关联属性名 + 下划线 + 被关联端的主键列名。上例为 passport_id, 因为Customer 中关联属性为 passport, Passport 的主键为 id.

    • 通过关联表来保存两个实体之间的关联关系。注:一对一,则关联表每个外键都必须是唯一约束。

    @Entity

    public class Customer implements Serializable {

       @OneToOne(cascade = CascadeType.ALL)

       @JoinTable(name = "CustomerPassports",

            joinColumns = @JoinColumn(name="customer_fk"),

            inverseJoinColumns = @JoinColumn(name="passport_fk")

       )

       public Passport getPassport() {

       ...

    }

    @Entity public class Passport implements Serializable {

       @OneToOne(mappedBy = "passport")

       public Customer getOwner() {

       ...

    }

    Customer 通过 CustomerPassports 关联表和 Passport 关联。该关联表通过 passport_fk 外键指向 Passport 表,该信心定义为 inverseJoinColumns 的属性值。 通过 customer_fk 外键指向 Customer 表,该信息定义为 joinColumns 属性值。

  • 相关阅读:
    关于windows CE Platform Builder中模拟器的限制
    送给每天都用电脑的人
    用eVC4开发SmartPhone、Pocket PC程序之 开发工具下载、安装、配置
    在手机上显示图片
    如何禁止回车的使用
    弹出窗口的方法
    Request.Form同Request.querystring的区别.txt
    找前几天
    手机上可移动的图片
    httphandler是做什么的?
  • 原文地址:https://www.cnblogs.com/winkey4986/p/2575253.html
Copyright © 2020-2023  润新知