2017-11-04 7 views
0
@Entity 
class Parent { 
    Long id; 
} 

@Entity 
class Child { 

    @ManyToOne 
    Parent parent; 

} 

目的: 親から削除する行を削除する必要はありません。Hibernate:親に影響を与えずに子行を削除する

観測:子行は削除されますが、他の行が参照するため、親を削除できないというエラーがスローされます。あなたは親に子供用のremoveChildを削除したい場合は

@Entity 
class Parent { 
Long id; 

@OneToMany(mappedBy="parent",cascade=CascadeType.ALL,orphanRemoval=true) 
Set<Child> children = new HashSet<>(); 

public void addChild(Child child) 
{ 
    children.add(child); 
    child.setParent(this); 
} 

public void removeChild(Child child) 
{ 
    children.remove(child); 
    child.setParent(null); 
} 

} 

@Entity 
class Child { 

@ManyToOne(optional=false) 
Parent parent; 

//important! implement hashCode and equals 

}

答えて

0

あなたのコードは次のようになります。 (ManyToOneのデフォルトのFetchTypeはEAGERです。)

+0

あなたの答えはありがたいですが、私はさまざまな理由で双方向関係を使用できません。しかし、問題を解決するために '@Transactional' – user3188225

関連する問題