2

我在删除子实体项时遇到问题。每次我删除它时都没有任何反应,并且父母和孩子之间的关联仍然存在。我在网上搜索过,有些人建议使用 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 并且它们通过 clientid 连接到assetid

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

@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。我不确定删除方法是否错误,因为这是我用来删除其他没有关系的实体项的方法。

4

1 回答 1

0

这应该可以帮助你。它是沿着相同的路线。我通常使用 Hibernate 而不是 JPA 来通过级联属性自动删除。

JPA OneToMany 不删除孩子

于 2012-10-27T22:21:22.307 回答