ALLHOME02-JPA @ManyToOne @OneToMany使用

多对一/一对多

1.1 OneToMany设置

  1. cascade 级联操作
	CascadeType. PERSIST 级联持久化 ( 保存 ) 操作
  CascadeType. MERGE 级联更新 ( 合并 ) 操作
  CascadeType. REFRESH 级联刷新操作,只会查询获取操作
  CascadeType. REMOVE 级联删除操作
  CascadeType. ALL 级联以上全部操作
  1. fetch 加载类型,默认情况一的方为立即加载,多的一方为延迟加载
	FetchType.LAZY   懒加载
  FetchType.EAGER  立即加载(缺省值)
  1. mappedBy 关系维护
	mappedBy= "parent" 表示在ListEntity类中的 parent 属性来维护关系,
	这个名称必须和ListEntity中的parent属性名称完全一致才行

	OneToMany必须写mappedBy,不然会多生成一张没用的中间表,因为如果没写mappedBy,JPA不知道具体怎样做关联

1.2 ManyToOne设置

	fetch=FetchType.LAZY的意思是select的时候懒加载,当加载ListEntity这个对象的时候,会加载他的属性,如id, name,但是不会去加载parent的属性。如果是EAGER,不仅会加载id,name等属性,而且会加载parent里面的属性。

  @JoinColumn@Column标记一样,是用于注释表中的字段的。它的属性与@Column属性有很多相同之处,例如name属性是用来标识表中所对应的字段的名称,其它的不再详述。
  @JoinColumn@Column相区别的是:@JoinColumn注释的是保存表与表之间关系的字段,它要标注在实体属性上(相当于外键)。而@Column标注的是表中不包含表关系的字段。
  在这里,@JoinColumn指的是ListEntity()表对应OrderEntity(一)表关联字段的名称。即ListEntity中的orderId对应OrderList中的主键Id。
发布了18 篇原创文章 · 获赞 7 · 访问量 372

猜你喜欢

转载自blog.csdn.net/weixin_44074551/article/details/103105700