hibernate中注解方式中的控制反转
2021-06-16 14:03
标签:cad query 表之间 art nat employees pid app 方便 都知道hibernate用xml方式配置关系时(one-to-many,many-to-many)可以添加控制反转属性 inverse=false(默认) 即将两表之间的关系交给对方来维护. inverse=true表示本方不维护关系,有对方维护关系 但是需注意的是,one-to-one关系是没有控制反转的,只能交由外键来维护关系. 从而导致在设置关系时,只能有外键方设置,移除关系时,只能从外键方来解除关系,删除记录时,只能先删外键方,在删主键方(save,remove,delete) 如果有控制反转的话,就方便的多,两表之间可以互相设置关系,互相解除关系,删除时,删除主键方时,会将外键方的外键置为空值()不过这样不推荐) 那么在hiebernate注解方式下(在没有xml配置的情况下)是如何设置控制反转的,如何在onetoMany ,manytomany中相互设置关联了? 当然inverse对get/query没有任何影响 一般控制反转(维护关系)都交给多方(外建方)来维护,学生记教室容易,教室记学生麻烦 原则: 1.one-to-one不添加控制反转,由外键维护关系 2.由多方维护关系, 主表方不维护主键关系 子表方(外键方) many to one不设置inverse属性(默认为inverse=false) 你写了反倒会出错 同理在annotation中many to one也不能写mappedBy (默认都是由对方控制的) 在one-to-one 双向关联中 外键方维护关系 @JoinColumn(name=" ",unique=".") //设置外键 inverse=false 主键方mappedBy="子表外键对象" //inverse=true many-to-many 有一方维护外键关系就行了 因此设置了一方关系 另一方@ManyToMany()不设置mappedBy就可以互相维护关系(但是不推荐) mappedBy ===inverse=true many-to-one 不写 hibernate中注解方式中的控制反转 标签:cad query 表之间 art nat employees pid app 方便 原文地址:http://www.cnblogs.com/lt123/p/7271416.html@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name="pid",unique=true)
public IdCard getIdCard() {
return idCard;
}