Hibernate OneToOne註解

@OneToOne是Hibernate中常見的表關係註解,指兩張表是一對一的關係。
可以有一對一單向,一對一雙向,同時又可以有外鍵關聯和主鍵關聯,總共4種。
用丈夫表和妻子表(想做@OneToMany的可以自己試試,括弧笑)舉個一對一雙向外鍵關聯的例子:

創建數據表,當然你也可以讓hibernate幫你生成。效果如下
表結構


CREATE TABLE `husband` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `wife_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `FK4BB1A83BA5D21E37` (`wife_id`),
  CONSTRAINT `FK4BB1A83BA5D21E37` FOREIGN KEY (`wife_id`) REFERENCES `wife` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8



CREATE TABLE `wife` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

創建wife,husband類,並註解。
如果在wife內的@OneToOne(mappedBy = “wife”)中不加mappedBy,你會發現運行hibernate後wife裏也會生成一個husband_id的外鍵指向husband表。
mappedBy後的wife是指husband類中的wife對象


@Entity
public class wife
{
    private int id;

    private String name;

    private husband husband;

    @Id
    @GeneratedValue
    public int getId()
    {
        return id;
    }

    public void setId(int id)
    {
        this.id = id;
    }

    public String getName()
    {
        return name;
    }

    public void setName(String name)
    {
        this.name = name;
    }

    @OneToOne(mappedBy = "wife")
    public husband getHusband()
    {
        return husband;
    }

    public void setHusband(husband husband)
    {
        this.husband = husband;
    }

}

@Entity
public class husband
{
    private int id;

    private String name;

    private wife wife;

    @Id
    @GeneratedValue
    public int getId()
    {
        return id;
    }

    public void setId(int id)
    {
        this.id = id;
    }

    public String getName()
    {
        return name;
    }

    public void setName(String name)
    {
        this.name = name;
    }

    @OneToOne
    public wife getWife()
    {
        return wife;
    }

    public void setWife(wife wife)
    {
        this.wife = wife;
    }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章