zoukankan      html  css  js  c++  java
  • 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 属性值。

  • 相关阅读:
    171. Excel Sheet Column Number (Easy)
    349. Intersection of Two Arrays (Easy)
    453. Minimum Moves to Equal Array Elements (Easy)
    657. Judge Route Circle (Easy)
    CSS笔记
    保存页面状态
    UI开发总结
    ubuntu 下配置munin
    反向代理配置
    JavaScript 高级程序设计第二版
  • 原文地址:https://www.cnblogs.com/winkey4986/p/2575253.html
Copyright © 2011-2022 走看看