采坑系列之JPA注解


springboot-jpa


@ManyToMany、@ManyToOne和@OneToMany
- 在最初配置关联模式的时候,基本是参照文档搬码,具体的用途根本不了解,可是当后来进行测试的时候那就各种报错了,可以用炸了来形容自己的心情了,下面是自己在使用过程中遇到的mappedBy问题:

采坑系列之JPA注解

原因:在当前比较高的版本中@JoinColumn与mappedBy是不能同时存在的,算是老死不相往来了,害的自己修改半天,这坑算是过去了,但是心不甘,还是进行了更多文档的查询,作了简单的分析:

在多对多或多对一、一对多中,mappedBy的声明代表指定了关联关系中的被维护端,定义的值是维护端在类中定义的被维护端的属性名。那么维护端与被维护端的意义是什么,本人开始觉得只是为了区分,因为在实际代码测试中发现无论是维护端还是被维护端都可发起对关系数据的操作,但是后来查询三汪:JPA实体关系映射补遗:有关mappedBy的思考发现,未手动设置级联属性时,被维护端是不会进行主动维护的,在单独操作维护端数据时,维护端对象为空,就会出现关系对象数据被删除的情况,贴心提醒最好在实体类中设置级联属性,防止问题的出现。


级联属性(cascade)
- CascadeType.ALL :包含所有持久化方法
- CascadeType.PERSIST:级联新增(保存)
- CascadeType.REMOVE:级联删除
- CascadeType.MERGE:级联更新(合并)
- CascadeType.DETACH:级联托管/游离
- CascadeType.REFRESH:级联刷新
本人理解的不够到位,不想直接粘贴,查阅到三汪:JPA概念解析:CascadeType(各种级联操作)详解,个人觉得参考这个可以快速理解。