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 属性值。

  • 相关阅读:
    java中的单例模式
    数组的冒泡排序
    2019年总结—即将而立之年的90后
    圣诞节开启博客之旅
    分布式多线程的Lock示例
    抽象工厂模式
    观察者模式
    建造者模式
    外观模式(Facade)
    模板方法模式
  • 原文地址:https://www.cnblogs.com/winkey4986/p/2575253.html
Copyright © 2011-2022 走看看