栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

@ManyToOne JPA关联和级联…不确定删除对象会发生什么

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

@ManyToOne JPA关联和级联…不确定删除对象会发生什么

这不是Hibernate,这是JPA 2.0标准的一部分。注释中有两个方面,一件事是使用orphanRemoval。

当父实体控制子实体的创建和销毁时,可以使用orphanRemoval。在UML中,这是组成的情况,这是整个部分的强大所有权和一致的生命周期。JPA
2.0规范在第2.9节:实体关系中说:

指定为OneToOne或OneToMany的关联支持使用orphanRemoval选项。当orphanRemoval生效时,将发生以下行为:

1.
如果从关系中移除了作为关系目标的实体(通过将关系设置为null或从关系集合中移除实体),则移除操作将应用于孤立的实体。清除操作在冲洗操作时应用。orphanRemoval功能适用于其父实体“私有”拥有的实体。否则,可移植应用程序不得依赖于特定的删除顺序,并且不得将已孤立的实体重新分配给另一个关系,也不能尝试将其持久化。如果孤立的实体是分离的,新的或已删除的实体,则orphanRemoval的语义不适用。

  1. 如果将删除操作应用于托管源实体,则删除操作将根据3.2.3节的规则级联到关系目标(因此,不必为该关系指定cascade = REMOVE)[
    20]。

第二个方面是在没有隐式删除的情况下使用cascase = REMOVE。

第3.2.3节:删除包含有关删除过程的详细信息:

应用于实体X的remove操作的语义如下:

•如果X是新实体,则删除操作将忽略它。但是,如果从X到这些其他实体的关系用cascade = REMOVE或cascade =
ALL标注元素值标注,则移除操作将层叠到X引用的实体。

•如果X是一个受管实体,则删除操作会使它被删除。如果从X到这些其他实体的关系使用层叠= REMOVE或层叠=
ALL标注元素值标注,则remove操作将层叠到X引用的实体。

•如果X是一个分离的实体,则remove操作将引发IllegalArgumentException(否则事务提交将失败)。

•如果X是已删除的实体,则删除操作将忽略它。

在事务提交之时或之前,或者由于刷新操作,将从数据库中删除已删除的实体X。删除实体后,其状态(生成状态除外)将是实体在调用删除操作时的状态。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/393148.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号