一 意义: 用来定义多对于一的表关联关系
(多指的是本实体的外键字段,可以有多个重复的值, 一指的是被关联的实体的主键, 只能是一个值)
二 他自带的属性(全部可选)
1 cascade
实例: @ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.Remove, CascadeType.MERGE, CascadeType.REFRESH, CascadeType.All})
级联(不懂意思参考jpa分类里的文章解释), 可以有5个值可选
* CascadeType.PERSIST :级联新建
* CascadeType.REMOVE : 级联删除
* CascadeType.REFRESH :级联刷新
* CascadeType.MERGE : 级联更新
* CascadeType.ALL : 以上全部四项
2 fetch
实例: @ManyToOne(fetch=FetchType.EAGER, fetch=FetchType.LAZY)
FetchType.EAGER: 立即加载, 获取关联实体
FetchType.LAZY: 懒加载, 取出数据的时候,关联的数据实体并不会取出来. 在session外就不能再调用关联实体的方法
3 optional
定义该关联类是否必须存在.
为false时, 2方必须存在, 关联关系为inner join(2表至少存在1个匹配).
为true时, 关系被维护方(1方)可以不存在关联关系为 left join, 结果依然返回的是关系维护端的.
4 targetEntity
表示关联的实体的类型, 默认是该成员属性对应的类类型, 通常不需要提供定义.
如果集合中已经指定了具体类型就不需要使用targetEntity, 否则就要指定targetEntity = **.class