《【注解】hibernate关系映射级别注解》由会员分享,可在线阅读,更多相关《【注解】hibernate关系映射级别注解(13页珍藏版)》请在金锄头文库上搜索。
1、【注解】hibernate关系映射级别注解关系映射级别注解一对一单向外键OneToOne(cascade=CascadeType.ALL)JoinColumn(name=pid,unique=true)注意:保存时应该先保存外键对象,再保存主表对象。在主控方的外键对象上进行配置,JoinColumn中配置的是外键的对应信息。主控方:被控方:测试方法:一对一双向外键主控方的配置同一对一单向外键关联OneToOne(mappedBy=card) /被控方双向关联,被控方必须设置mappedBy属性。因为双向关联只能交给一方去控制,不可能在双方都设置外键保存关联关系,否则双方都无法保存。主控方:被控
2、方:测试方法:加深理解:一对一单向外键联合主键创建主键类主键类必须实现serializable接口,重写hashCode()和equals()方法主键类Embeddable实体类EmbeddedId测试方法:多对一单向外键多方持有一方的引用,比如:多个学生对应一个班级(多对一)ManyToOne(cascade=CascadeType.ALL,fetch=FetchType.EAGER)JoinColumn(name=dept_id,referencedColumnName=uuid)JoinColumn中配置的是一方的对应信息。示例中相当于在UserTest的dept_id列上添加了外键约束
3、 参考的是classroom的uuid列多方:一方:测试方法:一对多单向外键一方持有多方的集合,一个班级有多个学生(一对多)。OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY)JoinColumn(name=cid)一方:多方:测试方法:总结:多对一时候,多方设置EAGER,一方设置LAZY。一对多(多对一)双向外键多方:多方持有一方的引用。ManyToOne(cascade=CascadeType.ALL,fetch=FetchType.EAGER)JoinColumn(name=cid)一方:一方持有多方的集合。OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY)JoinColumn(name=cid)测试方法:测试方法:测试方法: