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