java - "Remove"对分离实体的操作

标签 java jpa entity

我对分离实体的删除操作有疑问。

根据规范 “如果X是一个分离实体,则删除操作将抛出IllegalArgumentException(或者事务提交将失败)。”

但是删除操作对于分离的实体可能是有效的。对于事务范围的持久性上下文,请考虑以下场景:

1) 实体在事务 T1 中持久保存在数据库中。所以它变得分离。 2) 在事务 T2 中对该分离实体进行删除调用。

由于该实体存在于数据库中,因此删除调用应该有效,并且该实体应该作为事务 T2 的结果从数据库中删除。但根据规范,删除应该抛出异常,否则事务提交应该失败。

我在这里遗漏了什么吗?原因是什么?

最佳答案

分离实体是一个非托管实体,并且您正在尝试删除非托管实体,如果您想删除它,那么您必须将其放入托管状态。 或者另一种方法是找出分离实体的引用并尝试删除。

getEntityManager().getReference("detached");
remove("reference");

我不确定上面的行,但你可以尝试一下。

关于java - "Remove"对分离实体的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8484694/

相关文章:

ios - 尝试从核心数据中的两个实体中删除数据

java - JVM 进程大小和内存堆大小之间的巨大差异

java - Java 中大括号的正则表达式 Number 大括号 ({n})

java - 我应该使用什么作为空的哈希码?

java - DAO 和服务层(JPA/Hibernate + Spring)

c# - Entity Framework 自动预加载

java - 内存分配的最佳技术 - 重用一个全局内存或分配许多本地缓冲区并让它被垃圾收集

java - Spring-Hibernate 应用程序中的 Whitelabel 错误页面

java - 为什么 Spring boot 无法识别我的第二个数据源配置?

google-app-engine - 谷歌应用引擎 : How do I add fields to an existent entity