技术分享

@ManyToOne和@OneToMany 注解

时间:2022-09-25 08:08:06   作者:五块二   来源:转载   阅读:15   评论:0

(1)ManyToOne(多对一)单向:不产生中间表,但可以用@Joincolumn(name="  ")来指定生成外键的名字,外键在多的一方表中产生!

(2)OneToMany(一对多)单向:会产生中间表,此时可以用@onetoMany @Joincolumn(name=" ")避免产生中间表,并且指定了外键的名字(别看          @joincolumn在一中写着,但它存在在多的那个表中)

(3)OneToMany ,ManyToOne 双向(两个注解一起用的):如果不在@OneToMany中加mappedy属性就会产生中间表,此时通常在@ManyToOne的注            解下再添上注解@Joincolumn(name=" ")来指定外键的名字(说明:多的一方为关系维护端,关系维护端负责外键记录的更新,关系被维护端没有权利更新          外键记录)!(@OneToMany(mappedBy="一对多中,多中一的属性")出现mapby为被维护端|||默认为延迟加载)

 

用例:@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="child_id")
private OrderChild orderChild;

 

  @OneToMany(mappedBy="orderChild",fetch=FetchType.LAZY,cascade={CascadeType.MERGE})
  @NotFound(action=NotFoundAction.IGNORE)//代表可以为空,允许为null
  private List<OrderChildGoods> goodsList;

 

 

hibernate中@ManyToOne默认是立即加载,@OneToMany默认是懒加载

但是如果加上了@NotFound之后设置的fetch=FetchType.LAZY是不起作用的,也就是设置@NotFound后变为了立即加载eager

 

转自:https://www.cnblogs.com/zqyanywn/p/7753496.html

 

1、官方公众号:尘果科技
2、本站地址:www.5kuai2.com

3、资源部分来源于网络,如有侵权,请联系QQ827566124进行删除处理。



                                          

                                      
                 

相关评论
阅读排行
栖霞区尘果科技工作室版权所有  苏ICP备2022021227号-1