zoukankan      html  css  js  c++  java
  • Hibrenate关系映射(一对一外键关联)

    一、一对一(单向):使用外部索引将其中的一个类作为parent,相对应的一个就是子类,并且参照父
    类的主键ID来生成数据库表。(比如:可以将husband中设置一个wife_id对应wife中的主键id)
    1.Wife 类:生成get、set方法
    @Entity//注意使用注解
    public class Wife {
    private int id;
    private String name;
    @Id//注意使用注解
    @GeneratedValue//注意使用注解
    public int getId() {
    return id;
    }
    }
    2.Husband类,生成get、set方法
    @Entity
    public class Husband {
    private int id;
    private String name;
    private Wife wife;
    @Id
    @GeneratedValue
    public int getId() {
    return id;
    }
    public String getName() {
    return name;
    }
    @OneToOne
    @JoinColumn(name="wife_id")//映射:设置id的name,如果不设置,则系统默认设置一个名字
    public Wife getWife() {
    return wife;
    }
    }

    注:可以使用Power Design(反向工程)将数据库表表反向出来看效果。

    二、一对一(双向):方法同上,只是在两个类中都要设置对应的另外一个类(private Husband
    husband; 生成get set方法)的但是会导致其中一个外加的关联索引是冗余的,可以通过@OneToOne
    (mappedBy="wife")解决。相当于告诉系统,要以wife为主导,否则将找不到Husband。
    1.Wife类:生成get、set方法
    @Entity
    public class Wife {
    private int id;
    private String name;
    private Husband husband;//设置Husband类的一个对象,并生成get.set方法
    }
    注:凡是双向关联就必须设置mappedBy,但是没必要,因为设置一次就行。
    2.Husband类:生成get、set方法
    @Entity
    public class Husband {
    private int id;
    private String name;
    private Wife wife;
    @Id
    @GeneratedValue
    public int getId() {
    return id;
    }
    public String getName() {
    return name;
    }
    @OneToOne(mappedBy="wife")//要以wife为指导才能找到Husband
    public Wife getWife() {
    return wife;
    }

     hibernate.xml文件的设置:注意把新建的两个类注册到mapping中

    <mapping class="com.cqvie.model.Husband"/>
    <mapping class="com.cqvie.model.Wife"/>

    没有人能一路单纯到底,但是要记住,别忘了最初的自己!
  • 相关阅读:
    (原创)sqlite封装库SmartDB1.3发布
    合索引 与 单一列的索引
    Sql中CHARINDEX用法
    Eclipse 的快捷键以及文档注释、多行注释的快捷键
    JAVA 方法或者类的注释快捷键
    关于/r与/n 以及 /r/n 的区别总结
    c#中Split 分离字符以及空格消除方法
    C#生成Guid的几种方式
    MVC ViewBag和ViewData的使用
    软考之高级系统架构设计师(包含历年真题详解+课本教程+论文范文+视频教程)
  • 原文地址:https://www.cnblogs.com/LindaBlog/p/5477762.html
Copyright © 2011-2022 走看看