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では、これは私の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メソッドが間違っているかどうかはわかりません。これは、関係のない他のエンティティアイテムを削除するために使用したメソッドだからです。

4

1 に答える 1

0

これはあなたを助けるはずです。それは同じ線に沿っています。私は通常、JPA の代わりに Hibernate を使用して、カスケード属性を介して自動削除を取得します。

JPA OneToMany が子を削除しない

于 2012-10-27T22:21:22.307 に答える