многие ко многим не сохраняются в приложении gorm / grails - PullRequest
2 голосов
/ 24 мая 2009

В моем приложении Grails 1.1 примерно следующее:

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 и таблица приложений заполнены правильно.

Нужно ли вручную управлять объектом домена для таблицы ассоциации? Или, что еще лучше, я просто упускаю что-то совершенно очевидное?

1 Ответ

6 голосов
/ 25 мая 2009

Хорошо, одна вещь, которая не представлена ​​в вашем примере выше, это то, что вы не дали имя своему экземпляру приложения, даже если это обязательное поле (поля grails могут иметь значение null: по умолчанию false, если вы не указали это явно иначе). Могу поспорить, если вы проверите

app.hasErrors()

После вашего app.save () вы увидите, что в нем есть ошибки, которые вы можете перечислить в коллекции 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()
...