2011-08-16 3 views
1

여기 외래 키 제약 조건이있는 견해가 있습니다. 아무리 계단식 행동이나 belongsTo/hasMany에 지정하는 것을, 나는 외래 키 제약 조건 오류를 얻을Grails 캐스케이드 삭제 하시겠습니까?

나는이있다 :

내가가해야 할 일을 A.list()*.delete()

를 실행하려면

class A{ 
} 

class B{ 
} 

class C extends B { 
    static belongsTo = [a: A] 
} 

A을 사용하여 C을 계단식으로 삭제 하시겠습니까?

+0

당신이 외래 키 제약 조건 오류를 게시 할 수 있을까요? – Tom

+0

업데이트 쿼리를 실행할 수 없습니다 : SQL [delete form A where deleted =?] constraint [fk

+0

내 실제 삭제는 많은 레코드를 삭제하고 삭제를 반복 할 여력이 없기 때문에 'delete from A where condition'을 가진'executeUpdate'입니다. –

답변

1

class A에 매핑을 추가 했습니까? 내가 this에서 알고있는 것처럼

class A{ 

    static hasMany=[c:C] 
    static mappedBy=[c:"cColumn"] 
} 

, 모두 매핑이 존재해야

+0

최신 버전의 문서 (http://grails.org/doc/latest/guide/5.%20Object%20Relational%20Mapping%20%28GORM%29.html#5.3.3%20Understanding%20Cascading%20Updates% 20and % 20Deletes)이 매핑과의 관계를 '단방향 일대일'로 보여주기 때문에 여기에 뭔가있는 것 같아요. – proflux

+0

C 만 열을 정의하므로이 작업은 실패합니다. 필드를 기본 클래스 B로 옮기면 executeUpdate 또는 * .delete()를 사용하든 여전히이 오류가 발생합니다. –

+0

당신이 필요로하는 것처럼 보입니다. A.withNewSession { A.findByBlah() *. delete() } 이것은 약간 이상한 것 같지만 외래 키 통합 테스트를 통과 할 수있는 유일한 방법입니다. 나는 이유를 모른다. –

관련 문제