jpa 回顾之1

    这几天在学习了一下传智播客的jpa视频,觉得里面老师讲的一个知识点很重要,需要理解透彻:

 

 关系维护端负责外键记录的更新,关系被维护端是没有权利更新外键记录的.

    一个例子就是在manytomany关系映射中  student - teacher  把sutdent一端作为关系维护端,teacher作为关系被维护端,(mappedby 了student).他们之间的关系存储在了中间表中.

 

   数据库中有老师和学生,并且关系已经维护上了,现在假如说要删除一个老师:

em.remove(em.getReference(Teacher.class, 1))

这样写是错误的 因为:需要先删除关系 再删除老师 老师有外键约束 并且老师不是关系维护端  ,所以删除老师不能同时删除关系(关系被维护端没有权利更新字段(crud)).正确的方法应该是这样的:

  Student s = em.find(Student.class, 1);
  Teacher t = em.getReference(Teacher.class, 1);
  s.deleteTeacher(t);   //先删除关系
  em.remove(t);

 

另外 当要删除一个学生的时候可以直接:

em.remove(em.getReference(Student.class, 1))

 因为学生是关系维护端 可以对字段进行维护,在删除学生的同时,能够把关系删除.

    关系维护端负责外键记录的更新,关系被维护端是没有权利更新外键记录的.

   

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值