J'ai deux domaines:Comment forcer les grails GORM à respecter le schéma DB?
class CodeSet {
String id
String owner
String comments
String geneRLF
String systemAPF
static hasMany = [cartridges:Cartridge]
static constraints = {
id(unique:true,blank:false)
}
static mapping = {
table 'code_set'
version false
columns {
id column:'code_set_id', generator: 'assigned'
owner column:'owner'
comments column:'comments'
geneRLF column:'gene_rlf'
systemAPF column:'system_apf'
}
}
and :
class Cartridge {
String id
String code_set_id
Date runDate
static belongsTo = CodeSet
static constraints = {
id(unique:true,blank:false)
}
static mapping = {
table 'cartridge'
version false
columns {
id column:'cartridge_id', generator: 'assigned'
code_set_id column:'code_set_id'
runDate column:'run_date'
}
}
En fait, avec ces modèles, je reçois des tables:
- code_set,
- cartouche,
- et une table: code_set_cartridge (deux champs: code_set_cartridges_id, cartridge_id)
Je voudrais ne pas avoir code_set_cartridge table, mais gardez relation:
code_set -> 1: n -> cartouche
En d'autres termes, comment puis-je conserver l'association entre code_set et cartouche sans table intermédiaire? (en utilisant code_set_id comme clé primaire dans code_set et code_set_id comme clé étrangère dans la cartouche).
Le mappage avec GORM peut-il être effectué sans table intermédiaire?
En utilisant le mode unidirectionnel, il n'y a pas de table intermédiaire également. Mais je suis confus avec le mode bidirectionnel et unidirectionnel. Dans ce cas, je devrais utiliser le mode bidirectionnel et unidirectionnel? Un exemple ? Merci –
La décision se résume à si vous voulez avoir accès à l'ensemble mappé et la référence, ou juste la référence. Ma préférence est unidirectionnelle puisque vous pouvez toujours trouver les instances de CodeSet qui référencent une cartouche via "CodeSet.findAllByCartridge (this)" ou "CodeSet.findAllByCartridge (cartouche)". –
Dans votre exemple, vous utilisez un mode unidirectionnel? Droite ? En utilisant "cartouche de cartouche" j'ai aussi un mode unidirectionnel. Quelle est la différence ? Le mode unidirectionnel et le mode bidirectionnel affectent-ils l'organisation de la table db? –