当前位置: 首页 > 面试题库 >

Hibernate-拥有实体实例不再引用具有cascade =“ all-delete-orphan”的集合

奚曦哲
2023-03-14
问题内容

尝试更新我的实体时遇到以下问题:

"A collection with cascade=”all-delete-orphan” was no longer referenced by the owning entity instance".

我有一个父实体,并且有Set<...>一些子实体。当我尝试更新它时,我将获取所有要设置为此集合的引用并进行设置。

以下代码表示我的映射:

@OneToMany(mappedBy = "parentEntity", fetch = FetchType.EAGER)
@Cascade({ CascadeType.ALL, CascadeType.DELETE_ORPHAN })
public Set<ChildEntity> getChildren() {
    return this.children;
}

根据此,我尝试仅清理Set
<..>:如何“可能”解决问题,但没有成功。

如果您有任何想法,请告诉我。

谢谢!


问题答案:

实际上,我的问题是关于实体的等于和哈希码。遗留代码会带来很多问题,永远不要忘记对其进行检查。我所做的只是保留删除孤岛策略并更正equals和hashcode。



 类似资料:
  • 我在读下面的文章: 然而,student实体是用mappedBy注释的,我知道任何用mappedBy注释的实体都是相反的一面。谁能解释一下这个吗? 2-哪个ID是外键?@PrimaryKeyJoinColumn在Address实体中使用,这意味着地址Id是主键和外键吗?在下面的文章中,它们有相同的示例,但它是单向的: http://websystique.com/hibernate/hiberna

  • 问题内容: 我有这些实体 使用此映射(对不起,没有注释,我是老式的): 我还在2列上有一个唯一约束:和(不是每个约束都有唯一约束,但是包含两个约束都没有唯一约束,例如,不允许2行具有相同的父对象和相同的localIdentifier) 以及使用它们的这段代码: 现在,由于某种原因,Hibernate不会按调用顺序执行事情。它不会在(插入)之前执行(删除),反之亦然,它首先尝试插入,得到一个 我知道

  • 花了3天时间寻找解决方案,最后我来到这里寻求社区智慧。 我有如下的自我引用实体: 我通过手动运行它来确保请求不会返回数据库中的任何内容,但发现如果我将更改为,它将返回数据,因此,块中可能存在错误

  • 我正在使用Spring Cache,其中我传入一个键集合,返回是一个实体列表。我想让缓存框架明白返回列表中的每个元素都将使用相应的代码进行缓存。目前,键似乎是整个列表,如果我在后续调用中缺少一个键,它将再次尝试重新加载整个集合。 另一种可能性是返回是一个映射,同样,我希望缓存足够智能,可以只查询以前从未查询过的项目,也可以用它的键缓存每个项目。 假设乡村类如下所示: 这在Spring Cache中

  • 我试图理解javax.persistence注释@onetoone、@manytoone和@manytomany。这些注释的描述提到了。具体来说: [@OneToOne]:如果关系是双向的,则非拥有方必须使用OneToOne注释的mappedBy元素来指定拥有方的关系字段或属性。 [@manytoone]:如果关系是双向的,那么非所有者OneToMany实体端必须使用mappedBy元素来指定作为

  • 我需要三个实体——用户、订单和产品。订单可以有多个产品,产品可以有多个订单。但是在一个订单中,我们可以有几个相似的产品。如何使用Hibernate来组织它? 我认为其中一种方法是创建另一个实体-OrderProducts,但是我需要使用什么映射?或者有另一种简单的方法可以做到这一点吗? Order.java 产品Java语言 我需要order_products表有数量列,但我不知道怎么做。