Grails覆盖嵌入式属性映射
使用遗留现有数据库时,我们应该能够覆盖此类用例的嵌入式对象映射: 我想在我的数据库中添加一个客户,该客户在数据库中有两部电话: cu_phone 1和cu_phone 2。 给定以下电话对象:Grails覆盖嵌入式属性映射,grails,jpa,gorm,Grails,Jpa,Gorm,使用遗留现有数据库时,我们应该能够覆盖此类用例的嵌入式对象映射: 我想在我的数据库中添加一个客户,该客户在数据库中有两部电话: cu_phone 1和cu_phone 2。 给定以下电话对象: class Phone { String number [...] } 客户: class Customer { Phone phone1 Phone phone2 } 实际上,我们无法将此模型映射到gorm,因为Customer类无法覆盖phone number映射,以便pho
class Phone
{ String number [...] }
客户:
class Customer {
Phone phone1
Phone phone2
}
实际上,我们无法将此模型映射到gorm,因为Customer类无法覆盖phone number映射,以便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
在grails和gorm中使用此功能将非常好。您应该能够使用映射来指定列名,如下所示:
static mapping = { column = "cu_phone1" }
将属性映射到列。这就是你想要的还是我误解了这个问题
我想您应该这样映射:
class Customer {
Phone phone1
Phone phone2
static mapping = {
columns {
phone1 column: 'cu_phone1'
phone2 column: 'cu_phone2'
}
}
}
如果手机有两个属性
class Phone
{ String number
String type
[...] }
并且您希望列名为:
phone1.number : 'cust_number1'
phone1.type : 'cust_type1'
phone2.number : 'cust_number2'
phone2.type : 'cust_type2'
这是一个问题,不是答案。请写下在你描述的情况下你会怎么做。