删除onetomany关系中的实体

时间:2012-10-20 09:16:22

标签: java entity relationship

我在删除子实体项时遇到问题。每当我删除它没有任何反应,父母和孩子之间的关联仍然存在。我通过网络搜索,有些人建议使用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。  我不确定remove方法是否错误,因为这是我用来删除没有关系的其他实体项的方法。

1 个答案:

答案 0 :(得分:0)

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

JPA OneToMany not deleting child