J'ai une question sur la création d'une table associative, dans grails, pour réconcilier une relation many-to-many. La configuration est la suivante: 1. Le domaine A (profil client) peut avoir plusieurs domaines B (amis) 2. Chaque domaine B (amis) peut avoir plusieurs domaines A (profil client) 3. Pour résoudre ce problème, je dois créer une table associative (ou domaine) qui a des FK de chaque table. Ce domaine peut être nommé Domaine C (client_friend)Grails Domain Créer une table d'association
Voici le code que j'ai jusqu'à présent:
class DomainA{
String id
String firstName
String lastName
static hasMany = [domainB: DomainB]
static mapping = {
cache true
id generator: 'assigned'
columns {
firstName type:'text'
lastName type:'text'
alumConnections column: 'domaina_id', joinTable: 'a_b'
}
}
static constraints = {
firstName (nullable:true)
lastName (nullable:true)
}
}
code DomaineB:
class DomainB{
String id
String firstName
String lastName
static hasMany = [domainA:DomainA]
static belongsTo = DomainA
static mapping = {
cache true
id generator: 'assigned'
columns {
firstName type:'text'
lastName type:'text'
domainA column: 'domainb_id', joinTable: 'a_b'
}
}
static constraints = {
firstName (nullable:true)
lastName (nullable:true)
}
}
Domaine Code A_B:
class AB{
Date dateCreated
Date lastUpdated
long version
}
Lorsque je lance ce code, cela semble fonctionner. Les tables, en utilisant MySQL, sont créées, FK semble être en place. Lorsque je saisis des données dans la classe DomainB, les données sont saisies et les PK de DomainA et DomainB sont insérés dans A_B. Mais, les problèmes viennent quand j'essaye de supprimer des valeurs de A_B. J'ai essayé quelque chose comme ceci:
AB results =AB.findByAIdAndBId('jIi-hRi4cI','2BYvuA2X14')
mais je reçois une erreur: InvalidPropertyException: Aucun bien trouvé pour nom [a_id] pour la classe [classe mgr.AB]
Ma question est la suivante: en premier lieu, ont Je l'ai mis en place correctement? Deuxièmement, si oui, comment puis-je interroger la table AB qui PK est composé d'un composite de DomainA et DomainB?
Merci pour toute aide.
jason
Nous vous remercions de votre réponse. Qu'en est-il, dans mon exemple, DomainA et DomainB? Ai-je besoin de me débarrasser de leur «appartient à» et «a beaucoup»? – jason
Oui, il n'y a pas besoin d'eux. Je vais mettre à jour ma réponse pour réfléchir à la façon de gérer cela. – Gregg
Merci, je vais mettre en œuvre ces changements et voir comment cela fonctionne! – jason