子エンティティアイテムの削除で問題が発生しました。私がそれを削除するたびに何も起こらず、親と子の間の関連付けはまだそこにあります。ネットで検索したところ、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では、これは私の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());
}
}
アセットIDはmanagedbeanから解析されています。removeメソッドが間違っているかどうかはわかりません。これは、関係のない他のエンティティアイテムを削除するために使用したメソッドだからです。