2010-07-27 4 views
2

Je rencontre des problèmes persistants objets de domaine où j'ai un grand nombre à plusieurs avec une table de jointureproblème Grails données persistant dans tables de jointure pour plusieurs à plusieurs relations

class A{ 

String name 
static hasMany = [bs:B] 

} 


class B{ 

String surname 
static belongsTo=A 
static hasMany=[as:A] 

} 

A a = new A(name:'Test') 
B b = new B(surname:'user') 

a.addToBs(b) 
a.save(flush:true) 

Alors ce que j'attendais de voir est la suivante

Table A      Table AB     Table B 
id name     a_id  b_id    id surname 
1  Test     1   1     1 User 

Cependant, les données ne persiste que dans le tableau A.

Quelqu'un sait-il ce que je fais mal?

grâce

Répondre

0

J'ai essayé d'imiter votre code et les travaux en cascade pour moi.

Classe A:

package searcher 

class A { 
    String name 
    static hasMany = [bs:B] 

    static constraints = { 
    } 

    public String toString() { 
     def s = "Name: $name\n Bs: " 
     bs.each { 
      s = "$s $it " 
     } 
     return s 
    } 
} 

Classe B:

package searcher 

class B { 

    String surname 
    static belongsTo = A 
    static hasMany = [as:A] 

    static constraints = { 
    } 
} 

Controller Source:

package searcher 

class ManyController { 

    def ab = { 

     A a = new A(name:'Test') 
     B b = new B(surname:'user') 
     a.addToBs(b) 
     a.save(flush:true) 

     render A.list() 
    } 
} 

sortie Produit:

[Nom: Test Chambres d'hôtes: searcher.B: 1]

Je n'ai pas couru dans le problème que vous avez fait, mais j'ai eu quelques problèmes initial qui a été fixé en faisant une grails clean. Avez-vous essayé différentes configurations de bases de données? J'utilisais juste un ensemble en mémoire hsqldb pour créer-drop. Si vous utilisez un SGBD que j'ai installé, je vais essayer de le pointer vers une autre base de données et de lui donner un tourbillon.

+0

Merci pour votre aide, votre exemple fonctionne. J'ai trouvé quel était mon problème J'avais une liste dans ma classe 'A' avec le même nom que le nom de la relation 'bs' et les grails ne semblaient pas l'aimer. Une fois que j'ai changé le nom de la liste, la sauvegarde en cascade fonctionne bien – MTH

Questions connexes