我有兩個領域:如何強制grails GORM尊重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'
}
}
事實上,這些模型,我得到表:
- code_set,
- 墨盒,
- 和表:code_set_cartridge(兩個領域:code_set_cartridges_id,cartridge_id)
我想不會有code_set_cartridge表,但保持關係:
code_set - > 1:N - >盒
換句話說,如何在沒有中間表的情況下保持code_set和墨盒之間的關聯? (在code_set中使用code_set_id作爲主鍵,在cartridge中使用code_set_id作爲外鍵)。
與GORM的映射可以在沒有中間表的情況下完成?
通過使用單向模式,也沒有中間表。但我對雙向和單向模式感到困惑。在這種情況下,我應該使用雙向和單向模式?一個例子 ?謝謝 – 2010-05-14 21:13:56
如果你想訪問映射集和引用,或者只是參考,那麼決定的真正目的就是歸結爲什麼。我的首選是單向的,因爲您始終可以通過「CodeSet.findAllByCartridge(this)」或「CodeSet.findAllByCartridge(cartridge)」找到引用Cartridge的CodeSet實例。 – 2010-05-14 21:17:25
在你的例子中,你使用的是單向模式?對 ?通過使用「Cartridge cartridge」,我也有一種單向模式。有什麼不同 ?單向模式和雙向模式是否影響數據庫表組織? – 2010-05-14 21:35:53