映射关系
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CascadeType.PERSIST只有A类新增时,会级联B对象新增。若B对象在数据库存(跟新)在则抛异常(让B变为持久态)
CascadeType.MERGE指A类新增或者变化,会级联B对象(新增或者变化)
CascadeType.REMOVE只有A类删除时,会级联删除B类;
CascadeType.ALL包含所有;
CascadeType.REFRESH没用过。
综上:大多数情况用CascadeType.MERGE就能达到级联跟新又不报错,用CascadeType.ALL时要斟酌下CascadeType.REMOVE
这和cascade="save-update"没有什么关系,在多方配置中的many-to-one元素上加上lazy="false",表明我在查找多方对象时,对一方的查找使用延迟加载的策略,只有等到真正使用一方对象时,才会去数据库中查找该对象。而且我建议你不要在多方配置文件中的many-to-one元素上加cascade,因为这样当你保存多方对象时,会再次保存一方对象,经实践,这样的操作在某些情况下很容易出现问题。
如果需要级联删除,一定要注意设置表的外键可以为空。因为级联删除的步骤是先把表外键设为空,然后再删除的。