使用旧的现有数据库时,我们应该能够覆盖这种用例的嵌入对象映射: 我想在我的数据库中添加一个客户,这个客户在DB中有2个电话: cu_phone1和cu_phone2。 给出以下电话对象:
class Phone
{ String number [...] }
客户:
class Customer {
Phone phone1
Phone phone2
}
实际上,我们无法使用gorm映射此模型,因为Customer类无法覆盖电话号码映射,因此phone1.number映射到db中的cu_phone1,而phone2.number映射到db中的cu_phone2。
使用JPA,有一个注释允许这样做:
@AttributeOverride(name="number", column=@Column(name="cu_phone1")
Phone phone1
@AttributeOverride(name="number", column=@Column(name="cu_phone2")
Phone phone2
将这个功能放在带有gorm的grails中会很棒。
答案 0 :(得分:1)
我想你会像这样映射:
class Customer {
Phone phone1
Phone phone2
static mapping = {
columns {
phone1 column: 'cu_phone1'
phone2 column: 'cu_phone2'
}
}
}
答案 1 :(得分:0)
您应该能够使用映射来指定列名,如下所示:
static mapping = { column = "cu_phone1" }
将属性映射到列。这是你想要的,还是我误解了这个问题?
答案 2 :(得分:0)
如果手机有两个属性?
class Phone
{ String number
String type
[...] }
你想要列名:
phone1.number : 'cust_number1'
phone1.type : 'cust_type1'
phone2.number : 'cust_number2'
phone2.type : 'cust_type2'