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

如何解决@ManyToOne JPA关联和级联…不确定删除对象会发生什么情况

||| 对于删除操作中级联的工作方式,我仍然不太清楚。我想知道如果我有这个会发生什么:
class myBean{

    @ManyToOne(fetch = FetchType.LAZY,cascade = CascadeType.ALL)
        public Cliente getClienteDiAppartenenza() {
            return clienteDiAppartenenza;
        }

}


class Cliente{
@OnetoMany(cascade = CascadeType.ALL,orphanRemoval = true,fetch = FetchType.LAZY)
    public List<myBean> getMyBeans() {
        return myBeans;
    }
}
如果我删除具有此属性的myBean,我不确定是否也将删除链接的Cliente(很奇怪),或者Cliente内部的集合将被更新,然后删除myBean的实例,然后保存。 会发生什么?? Hibernato的文档对此不太清楚...     

解决方法

        这不是Hibernate,这是JPA 2.0标准的一部分。注释中有两个方面,一件事是使用orphanRemoval。 当父实体控制子实体的创建和销毁时,可以使用orphanRemoval。在UML中,这是组成的情况,这是整个部分的强大所有权和一致的生命周期。 JPA 2.0规范在第2.9节:实体关系中说:   指定为的关联   OneToOne或OneToMany支持使用   orphanRemoval选项。的   以下行为适用于   orphanRemoval生效:         如果从关系中移除了作为关系目标的实体   关系(通过设置   与null的关系或删除   关系中的实体   集合),则删除操作将   适用于   成为孤儿。删除操作是   在冲洗时使用   操作。孤儿搬迁   功能适用于实体   由他们私人“拥有”   父实体。便携式应用   否则必须不依赖于   具体移除顺序,并且必须   不重新分配已经   成为另一个关系的孤儿或   否则,尝试将其保留。如果   被孤立的实体是   分离的,新的或已删除的实体,   orphanRemoval的语义不   应用。   如果将删除操作应用于托管源实体,则删除   操作将级联到   关系目标符合   3.2.3节的规则(因此   没有必要指定   级联=删除   关系)[20]。    第二个方面是在没有隐式删除的情况下使用cascase = REMOVE。 第3.2.3节:删除包含有关删除过程的详细信息:   删除操作的语义,   应用于实体X的方法如下:      •如果X是新实体,则将其忽略   通过删除操作。然而   删除操作级联到   X引用的实体,如果   从X到其他的关系   实体用   级联=删除或级联=全部   注释元素值。      •如果X是管理实体,则删除   操作导致将其删除。   删除操作级联为   X引用的实体,如果   从X到其他的关系   实体用   级联=删除或级联=全部   注释元素值。      •如果X是独立实体,则   IllegalArgumentException将是   由remove操作(或   事务提交将失败)。      •如果X是已删除的实体,则为   由remove操作忽略。      移除的实体X将被移除   在数据库之前或之前   事务提交或由于   冲洗操作。在实体之后   已被删除,其状态(除   对于生成状态)将是   实体在   调用了删除操作。     ,        您的JPA提供者不会为您管理内存中的Java集合。如果您在双方之间都映射了关系,则应使用非拥有方的映射中的maptedBy属性将一方定义为拥有方。由您决定哪一方是拥有方。做出决定后,JPA提供程序将使用您在映射中定义的任何级联/孤立管理来使数据库中的信息保持最新,但是您将不得不在非所有者方管理集合。 解决此问题的一种方法是拥有一个用于进行更改的服务方法,该服务方法负责在事物的1-n和n-1侧更新集合或引用,以便您的java对象正确无误。记忆。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?