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

StackOverflow https://stackoverflow.com/questions/903214

  •  05-09-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

Ну, одна вещь, которая не представлена в вашем примере выше, заключается в том, что вы не дали имя своему экземпляру приложения, даже если это обязательное поле (поля grails обнуляются: 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()
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top