Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JPA::孤立删除和惰性集合_Jpa - Fatal编程技术网

JPA::孤立删除和惰性集合

JPA::孤立删除和惰性集合,jpa,Jpa,假设我有一个实体A,其中包含OneToMany的Bs集合,其中FetchType-EAGER和孤儿删除设置为true。当我调用EntityManager#merge对已分离并从其集合中删除了一些B元素(分离时)的a对象时,相应的行(其实体现在从集合中丢失)将从数据库中删除(在JPA/Hibernate中) 在懒惰的集合的情况下,这会是怎样的结果?当要求EntityManager合并修改后的a对象时,它如何区分从集合中显式删除的B实体与由于延迟获取类型而从未获取的B实体之间的区别?JPA实现必须保

假设我有一个实体A,其中包含OneToMany的Bs集合,其中FetchType-EAGER孤儿删除设置为true。当我调用EntityManager#merge对已分离并从其集合中删除了一些B元素(分离时)的a对象时,相应的行(其实体现在从集合中丢失)将从数据库中删除(在JPA/Hibernate中)


懒惰的集合的情况下,这会是怎样的结果?当要求EntityManager合并修改后的a对象时,它如何区分从集合中显式删除的B实体与由于延迟获取类型而从未获取的B实体之间的区别?

JPA实现必须保留有集合的标志已初始化或仍处于惰性状态

因此,如果合并以前分离的实体,则合并操作将检查集合,如果仅初始化了集合,则它将枚举内容,以查找对从数据库获取的实体所做的更改

但是,如果实例化一个新实例并将其传递给merge,则集合将被视为已初始化,如果集合为空,则JPA将删除所有集合项


请停下来试试新的JPA实现,Batoo JPA-比市场上当前的JPA实现快15倍以上。

非常清楚。JPA规范中是否定义了这种行为?没有详细说明。但这完全是从规范中推断出来的。这是否意味着将集合设置为null不会触发级联?