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;
    }

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值