hibernate 一对一外键关联

来源:互联网 发布:二手手机淘宝店推荐 编辑:程序博客网 时间:2024/05/08 04:37

一对一单向外键关联:一夫一妻,是一对一的关系。建Husband 和Wife类。

public class Husband {    private int id;    private String name;    // 丈夫和妻子,一夫一妻,一对一关联。丈夫里面有Wife的引用,Wife里面没有设定Husband引用,单向引用。    private Wife wife;         @Id     @GeneratedValue    public int getId() {        return id;    }     @OneToOne//一对一     //@JoinColumn与@Column标记一样,是用于注释表中的字段的。     @JoinColumn(name="wife_Id")    public Wife getWife() {        return wife;    }    getset方法省略.........}public class Wife {      private int id;      private String name;     @Id     @GeneratedValue    public int getId() {        return id;    }      getset方法省略.........}
@Test    public void save(){         Husband h=new Husband();        h.setName("lilei");         Wife wife=new Wife();               wife.setName("hanmeimei");          h.setWife(wife);        Configuration con= new AnnotationConfiguration();        SessionFactory sf=con.configure().buildSessionFactory();        Session session=sf.getCurrentSession();        session.beginTransaction();        session.save(wife);        session.save(h);        session.getTransaction().commit();         sf.close();    }    控制台打印结果:    Hibernate:     insert     into        Wife        (name)     values        (?)Hibernate:     insert     into        Husband        (name, wife_Id) //wife_Id) 外键    values        (?, ?)

一对一双向外键关联:只改动Wife即可。

@Entitypublic class Wife {    private int id;    private String name;    private Husband husband;    @Id    @GeneratedValue    public int getId() {        return id;    }     //设置mappedby.否则两边都设外键会显得特别冗余,好像还会经常报错。    @OneToOne(mappedBy="wife")     public Husband getHusband() {        return husband;    }    //其他省略...}Hibernate:     insert     into        Wife        (name)     values        (?)Hibernate:     insert     into        Husband        (name, wife_Id)     values        (?, ?)

一对一单向外键关联和一对一双向外键关联,在数据库中没有区别,在后台代码中单向我们的wife找不到husband,而双向中可以找到。好像也没什么区别………….

0 0
原创粉丝点击