2009-05-24 2 views
2

나는 내 grails 1.1에서 대략 다음과 같은있다. 응용 프로그램gorm/grails app에 지속되지 않는 many-to-many

class AppCategory { 
    static belongsTo = App 
    static hasMany = [ apps: App ] 
    String name 
} 

class App { 
    static hasMany = [ categories: AppCategory] 
    String name 
} 

App app = new App() 
AppCategory appCat = AppCategory.findByName('blah') 
app.addToCategories(appCat) 
app.save() 

올바른 테이블 (app, app_category 및 app_categories)이 만들어지고 열이 모두 잘된 것처럼 보이지만 연결의 레코드로 끝나지 않습니다. 테이블 및 오류 없음. app_category 테이블과 app 테이블이 올바르게 채워집니다.

연결 테이블의 도메인 개체를 수동으로 관리해야합니까? 또는 더 나은 아직, 나는 다만 완전하게 명백한 무언가를 놓치고 있냐?

답변

6

글쎄, 위의 예에서 표현되지 않은 한 가지는 필수 입력란인데도 당신의 App 인스턴스에 이름을 지정하지 않았다는 것입니다 (grails 필드는 nullable : 명시 적으로 그렇지 않으면). 당신이) 당신의 app.save (후

app.hasErrors() 

을 선택하면 난 당신이 당신이 app.errors 컬렉션 나열 할 수 있습니다 오류가 않습니다 볼 것을, 내기.

그렇지 않으면, 당신이 무엇을 잘하고,이 코드는 도메인이 위가 객체와 나를 위해 잘 작동 :

AppCategory appCat = new AppCategory(name: "blah")  
appCat.save()  
assert !appCat.hasErrors() 


App app = new App(name: "testApp") 
app.addToCategories(appCat)  
app.save()  
assert !app.hasErrors() 
관련 문제