2011-04-08 4 views
1

계단식 삭제가없는 양방향 1 : N 연결에서 부모 개체를 삭제할 수 있는지 알고 싶습니다.양방향 연결에 대한 계단식 삭제를 방지하는 방법은 무엇입니까?

http://grails.org/doc/1.0.x/guide/5.%20Object%20Relational%20Mapping%20%28GORM%29.html

에 따르면 ... 단방향 관계에서 부모 끝은 '저장 업데이트'와 아이 '없음'로 끝나는 매핑됩니다. 양방향 관계에 대해 이러한 설정을 시도했지만 아주 놀랍지 만 작동하지 않았습니다. 특히 :

class Project { 
    ... 
} 
static belongsTo = [leaddeveloper:Personnel, projectmanager:Personnel] 

static mapping = { 
    leaddeveloper cascade:'none' 
    projectmanager cascade:'none' 
} 

차라리이에 대한 해결책이 있는지 (프로젝트 클래스에서 "belongsTo를"을 제거하여) 내 응용 프로그램을 재 설계하지 않는 게 좋을 :

class Personnel { 
    ... 
} 

static hasMany = [projectlead:Project, projectmanager:Project] 

static mappedBy = [projectlead:'leaddeveloper', projectmanager:'projectmanager'] 

static mapping = { 
    projectlead  cascade:'save-update' 
    projectmanager cascade:'save-update' 
} 

그리고 여기에 프로젝트 클래스 년대는 양쪽 끝에서의 네비게이션 액세스는 매우 편리하며 프로젝트 끝 부분에 너무 많은 인스턴스가 없습니다.

또한 이것을 구현할 방법이 있다면, 이후에 이러한 활성 매핑이 어떻게 될지, 예를 들어 설정 (또는 설정) 할 수 있습니까?

이 문제에 대한 모든 의견을 감사드립니다.

답변

2

질문을 읽으면 "Personnel"개체를 삭제하고 "projects"은 그대로 둡니다. 안타깝게도 현재의 구현에서는이 작업을 수행 할 수 없습니다. "belongsTo"관계는 모든 하위 개체에 부모 개체가 있어야 함을 의미합니다. 부모를 삭제하면 고아도 삭제됩니다.

디자인을 너무 많이 수정하지 않고도 시도 할 수있는 또 다른 옵션은 "삭제 된 것으로 표시"입니다. Personal에 '삭제 된'입력란을 추가하십시오. 누군가를 삭제하려면 해당 사용자를 삭제 된 것으로 표시하십시오. 이렇게하면 프로젝트 관리자가 퇴사 한 후에도 프로젝트의 기록 데이터를 유지하는 데 도움이됩니다.

+0

안녕하세요 호앙, 많은 의견에 감사드립니다 ... 나는 이것이 내가 구현할 것이라고 생각합니다! – sphere

관련 문제