Fab*_*ier 2 grails groovy database-design relational-database grails-orm
我有两个域名:
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'
}
}
Run Code Online (Sandbox Code Playgroud)
实际上,使用这些模型,我得到表:
- code_set,
- cartridge,
- 和table:code_set_cartridge(两个字段:code_set_cartridges_id,cartridge_id)
我想没有code_set_cartridge表,但保持关系:
code_set - > 1:n - > cartridge
换句话说,如何在没有中间表的情况下保持code_set和盒式磁带之间的关联?(将code_set_id用作code_set中的主键,将code_set_id用作盒中的外键).
使用GORM进行映射可以在没有中间表的情况下完成
如果您更改belongsTo声明,它可以工作.您可以在belongsTo中命名实例,而不是仅仅引用CodeSet的id,您将获得对实例的引用并避免使用连接表.我还删除了多余的映射:
class Cartridge {
String id
Date runDate
static belongsTo = [codeSet: CodeSet]
static mapping = {
version false
id generator: 'assigned'
codeSet column:'code_set_id'
}
}
class CodeSet {
String id
String owner
String comments
String geneRLF
String systemAPF
static hasMany = [cartridges:Cartridge]
static mapping = {
version false
id generator: 'assigned'
geneRLF column:'gene_rlf'
systemAPF column:'system_apf'
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1607 次 |
| 最近记录: |