나는 여러 가지 관계 (오직 @ManyToOne
)와 관련이있는 엔티티를 열심히 삭제하려고 애 쓰고있다. 그러나 Hibernate는 아무것도 삭제하지 않는다. em.remove
을 호출 한 후에는 모든 것이 변하지 않는다. 왼쪽Hibernate EntityManager : 참조 된 엔티티가 작동하지 않는다.
public class E6{
@ManyToOne(optional = false)
private E1 e1;
@ManyToOne(optional = false)
private E2 e2;
@ManyToOne(optional = false)
private E3 e3;
@ManyToOne(optional = false)
private E4 e4;
@ManyToOne(optional = false)
private E5 e5;
}
(:
@Entity
public class EX {
@OneToMany(mappedBy = "eX", fetch = FetchType.EAGER, cascade = { CascadeType.PERSIST, CascadeType.REMOVE })
private Set<E6> e6s;
}
E6
자체가 역을 @ManyToOne
관계가 있습니다
나는이 같은 문제의 엔티티 (E6
를) 참조 5 엔티티 (E1 - E5
)가 외부 입력란, 추가 항목 등)
em.remove(instanceOfE6)
으로 전화 할 때마다 간단히 이 표시되지 않습니다.이 발생합니다. 나는 Hibernate SQL-Output을 추가 했으므로 DELETE
쿼리를 한 번 실행하는 것을 볼 수 없다.
em.remove(em.merge(instanceOfE6));
하지만 아무것도 : 삭제가 아약스 요청과 신선한의 EntityManager에서 일어날 수 있기 때문에
, 나는 내가 법인 관리되지 않는 예외를 얻을 수 otherwhise의 원인, 삭제하기 전에 병합 전화를 추가 . 상태는 변경되지 않습니다.
그래서 엔티티를 제거하기 전에 모든 관계를 지우는 방법 @PreRemove
을 추가하려고했습니다. 메서드가 호출되지 않습니다.
다양한 계단식 조작 (Cascade.ALL
포함)을 시도했지만, 제거와 지속이 필요하기 때문에 작동해야합니다.
내가 (그래서 가장 가능성이 일을하고자, 각 엔티티는 대리 ID를 가지고) 기본 삭제 정책을 사용하는 방법에 대한 생각 -하지만 모두가 AJAX 호출 내에서 발생하기 때문에, 그 사용하지 않으 , 나는 모든 관련된 엔티티를 다시 가져 오지 않고서도 Persistence-Cache를 업데이트하고 싶기 때문에 ...
아이디어가 있으십니까?
더 많은 자료가 필요하면 의견을 보내주십시오. 행운 -
는 또한 최대 절전 모드가 해제 된 개체를 whipe 것으로 기대하고, 모든 관계 (현명한 객체)에서 문제의 엔티티를 제거하고 나머지 기관 중 하나에
em.merge()
전화를 시도했다.
거래를 위탁 했습니까? –
'em.flush()'를 호출 했습니까? – jmvivo
@DavidLevesque 자동 커밋 모드에서 최대 절전 모드를 실행 중 ... – dognose