Domanda

Ho grosso modo la seguente nei miei graal 1.1 app

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()

Le tabelle corrette (app, app_category e app_categories) vengono creati e le colonne sembrano tutti bene, ma io non finiscono con tutti i record nella tabella di associazione e senza errori. La tabella app_category e la tabella di app sono correttamente popolate.

Ho bisogno di gestire manualmente un oggetto di dominio per la tabella di associazione? O meglio ancora, io sono solo manca qualcosa di totalmente ovvio?

È stato utile?

Soluzione

Beh, una cosa che non è rappresentato nel tuo esempio sopra è che non ha dato un nome all'istanza App, anche se è un campo obbligatorio (Grails campi sono annullabili: false per impostazione predefinita a meno che non esplicitamente dite altrimenti). Scommetto che se si controlla

app.hasErrors()

Dopo che l'app.save (), che si vedrà se ha gli errori che si possono elencare nella raccolta app.errors.

In caso contrario, ciò che avete va bene, e questo codice funzionato bene per me con il dominio oggetti si dispone sopra:

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()
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top