2017-03-02 2 views
0

GORM의 작동 방식을 이해하려고합니다. 건물과 건물이있는 프로젝트 (훌륭한 건물의 영역)를위한 데이터베이스를 구축하는 것은 내가 원하는 방식으로 작동하지 않습니다. 내가 원한 것은 각 프로젝트마다 하나의 건물과 그 건물의 건물 중 하나가 있다는 것입니다. 그런 식으로 모든 buildingpart에 대해 나에게 dropdownmenu를 제공하고 selectet 건물에서뿐만 아니라 사람GORM 기본 문제 해결

class Project { 
    String name 
    static hasOne = [building: Building] 
    Buildingpart buildingpart 
    String toString(){ 
     return name 
    } 
} 

class Building { 
    String name 
    static hasMany = [projects: Project, buildingparts: Buildingpart] 
    String toString(){ 
     return name 
    } 
} 

class Buildingpart { 
    String buildingpart 
    static belongsTo = [building: Building] 
    String toString(){ 
     return buildingpart 
    } 
} 

그 일 :

나는 그런 식으로했습니다. 나는 어떤 제안이라도 기쁠 것이다. 당신은 아마 그런

Buildingpart getCurrentPart(Buildingpart buildingPart) { 
return this.buildingparts.find{buildingPart} 
} 

Project project = project.get(id) 



println "project building = ${project.building}" 
    println "project buildingparts = ${project.building.buildingparts}" 
    println "project currentpart = ${project.building.getCurrentPart(project.buildingpart)}" 

같은 Building 클래스 뭔가를 추가 후크가 필요

+0

귀하의 도메인 모델 중 아무것도 buildingpart가 건물의 건물 부분이어야한다고 명시하지 않습니다. 이를 확인하기 위해 사용자 정의 유효성 검사를 추가 할 수 있습니다. 드롭 다운까지는 올바른지 확인하는 것이 좋습니다. –

+0

@James Kleeh : 비록 정적 인 belongsTo = [building : Building]은 그렇게합니다. –

+0

아니요, 그렇지 않습니다. Buildingpart의 belongsTo와 Project의 hasOne은 다른 속성입니다. –

답변

0

디자인은 당신이 당신의 선택 상자를 말할 때,이에 있기 때문에 나에게 아무 의미 좋아 보인다 우리는 여기에 우리가 무엇을 의미하는지 전혀 알지 못합니다. 프로젝트 클래스의 메모라고도합니다 :

,210

는 당신은 hasMany의 buildingparts: Buildingpart]

당신이주의해야 할 점은이 println 메소드에서 발생하고 다음과 같이 바인딩 : 당신이 다음 프로젝트

에서 개체에 대한 buiding는에게 많은 부분을 조회

project.building.getCurrentPart(project.buildingpart)

+0

Bauteil buildingpart를 Buildingpart buildingpart로 수정했습니다. 번역하는 것을 잊었습니다. –