当前位置: 首页 > 知识库问答 >
问题:

删除一对一关系中的实体

骆文彬
2023-03-14

我在删除子实体项目时遇到问题。每次我删除它的时候,什么都没有发生,父节点和子节点之间的关联仍然存在。我在网上搜索过,有些人建议使用orphanremoval,但我试过了,没有用。如果任何人可以建议,不胜感激。我的代码如下:

ClientProfile Entity (PARENT)

 Collapse | Copy Code
 @Entity (name="ClientProfile")
 public class ClientProfile implements Serializable {

 @OneToMany(orphanRemoval = true)
 private List<Address> address;
 @OneToMany(orphanRemoval = true)
 private List<ClientJob> clientJob;
 @OneToMany(orphanRemoval = true)
 private List<Asset> clientAsset;
 ...
 }

资产实体 (CHILD) 是单向关系,因此资产实体不包含任何@ManyToOne

在我的 SQL 数据库表中,我的关系CLIENTPROFILE_CLIENTASSET,它们通过客户端 ID 连接到资产 ID

在我的会话bean中,这是我的remove方法:

@Override
 public void removeAsset(Long assetId) throws DoesNotExistsException{
 Query query = em.createQuery("SELECT as FROM Asset as WHERE as.assetId = :assetid");
 query.setParameter("assetid", assetId);
 if (query.getResultList().isEmpty()){
 throw new DoesNotExistsException("Asset does not exist!"); 
 } else {
 em.remove(query.getSingleResult()); 

 }
 }

正在从managedbean解析assetid。我不确定移除方法是否错误,因为这是我用来移除没有关系的其他实体项的方法。

共有1个答案

杜烨伟
2023-03-14

这对你有帮助。这是沿着相同的路线。我通常使用Hibernate而不是JPA通过级联属性自动删除。

JPA 一对多不删除子项

 类似资料:
  • 我的两个实体有一对一的关系 我尝试通过此方法删除我的用户实体 PasswordResetTokenRepository类,我在服务方法中调用了该类,用于删除用户,我使用了常规Hibernate方法deleteById(Long id) 但是当我尝试通过此方法删除时,出现此错误:not-null 属性引用 null 或瞬态值:kpi.diploma.ovcharenko.entity.user.Pa

  • 问题内容: 我在Hibernate参考书的第21章中有一个基本的一对多关系父母/子女。 级联仅从子级到父级(持久级联仅是因为删除子级后我不希望删除父级)。 当我向父级添加一个子级并保存该子级时,我有一个TransientObjectException … 但是在saveOrUpdate上,我有以下异常: 我真的不明白,因为拯救孩子应该通过级联来拯救父母……有什么想法吗? 更新1 该问题似乎与“ o

  • 问题内容: 我要删除具有多对多关系的一个站点上的表中的一行。我还想删除该关系另一侧的所有相关行。 例如,假设我有以下表格,并且想从中删除一行。我也想从中删除所有相关的行,当然,也删除其中不再需要的任何行。 我知道如何在查询中连接以上表格。但是我看不到如何删除整个关系中的数据。 注意:关系的两端都实现级联删除。因此,例如,从中删除行将删除中的任何相关行。但是显然,这不会传播到表中。 问题答案: 我认

  • 我有一个名为 Article 的实体类,另一个名为 ArticleTag 的实体。这两个实体是许多多属性关系,这意味着许多文章可以链接到同一个标签,并且许多标签可以与同一篇文章相关联。 在我的文章实体中,我有以下内容: 在我的ArticleTag实体中,我有这个: 当我的控制器被调用来删除一篇文章时,我在我的ArticleDao类中使用了一个方法,该方法基本上正在这样做: 但是,我的文章无法删除。

  • 我是Spring BootJPA的新手,正在努力找出多个实体之间的关系。 我有一个用户实体、一个产品实体和一个评论实体。一个用户有很多评论。一个产品有很多评论。评论有一个产品和一个用户。 目前,我正在为用户使用一对多的关系 我的问题: 如何在不删除产品实体和用户实体的情况下删除审阅实体? 我应该使用哪种级联类型? 用户实体: 产品实体: 审查实体: 用户控制器: 用户服务: 简单运行: 我认为我不

  • 我有两个实体,用户和电影。他们是很多双向的关系。我的问题是,当我通过我的控制器删除一部电影时,它也会删除所有与该电影相关的实体。My user和this user角色和movie实体。我要做什么,从表中删除电影实体,并保持用户与他的角色,而不是删除他们所有。