2013-01-07 2 views
2

hasMany가 C 인 2 (또는 그 이상) 도메인 클래스가있는 경우 C의 엔티티가 추가되었는지 어떻게 확인할 수 있습니까?도메인 클래스가 추가 될 때를 결정할 수 있습니까?

class A { 
    String name 
    static hasMany = [cs: C] 
class B { 
    String name 
    static hasMany = [cs: C] 
} 
class C { 
    String someProperty 
} 

// In CController add Action 
//... 
genericInstance.addToCs(cInstance) 

내가 처리 할 수있는 이벤트가 더 필요합니다. CControllerAB 인라인 양식에 사용하지만, 나는 그들이 동일한 가지고 주어진, 당신은 단지 하나 개의 도메인으로 A와 B를 통합하지 않는 이유 도메인 C

+1

(genericInstance.cs에서 cInstance) 경우? – coderLMN

+0

클래스'C'에서 자신 만의'addToCs' 메소드/Closure를 작성하려 했습니까? – Isammoc

+0

@Isammoc 만약 당신이 그것을 다시 쓰는다면 당신의 답을 고려해 볼 것입니다. –

답변

1

AB에는 addToCs 방법/폐쇄 방법을 쓰실 수 있습니다.

class A { 
    String name 
    static hasMany = [cs: C] 
    def addToCs = { 
     // Do what you want with your value 
     cs.add(C) 
    } 
} 

는 기본적 addToCs에서 어떤 일이 일어나는지주의 : DomainClassGrailsPlugin.groovy:289 @github

0

에 추가됩니다에 따라 실행하는 두 개의 서로 다른 프로세스가 필요합니다 속성?

I는 다음과 같이 할 것을 권 해드립니다 :

class AB { 
    char type 
    String name 
    static hasMany = [cs: C] 

    static constraints = { 
     type inList:['A','B']  //you can extend to 'C', 'D'... easily with this 
    } 
} 
class C { 
    String someProperty 
} 

는 컨트롤러에서 당신이 할 수 있습니다

abInstance.addToCs(cInstance) 
def domainTag = abInstance.type 

그런 다음 domainTag 당신이 원하는 것입니다.

+0

아니요. 실제로 'A'와 'B'는 완전히 다른 두 도메인이기 때문입니다. 내 예제는 의사 코드입니다. –

관련 문제