2013-12-19 109 views
0

當使用舊版現有數據庫時,我們應該能夠覆蓋這種用例的嵌入對象映射: 我想在我的數據庫中添加一個客戶,該客戶在數據庫中有2個手機: cu_phone1和cu_phone2。 考慮下面的電話對象:Grails覆蓋嵌入屬性映射

class Phone 
{ String number [...] } 

和客戶:

class Customer { 
    Phone phone1 
    Phone phone2 
} 

其實,我們不能圖這個模型GORM,因爲Customer類不能覆蓋的電話號碼映射,使PHONE1。號碼映射到數據庫中的cu_phone1,phone2.number映射到數據庫中的cu_phone2。

使用JPA,有一個註釋允許這樣做:

@AttributeOverride(name="number", [email protected](name="cu_phone1") 
Phone phone1 
@AttributeOverride(name="number", [email protected](name="cu_phone2") 
Phone phone2 

這將是巨大的,有在格姆的Grails此功能。

回答

0

你應該能夠使用映射來指定,像這樣的列名:

static mapping = { column = "cu_phone1" } 

的屬性列映射。這是你所追求的還是我誤解了這個問題?

Grails docs

1

我想你會映射這樣的:

class Customer { 
    Phone phone1 
    Phone phone2 

    static mapping = { 
     columns { 
      phone1 column: 'cu_phone1' 
      phone2 column: 'cu_phone2' 
     } 
    } 
} 
0

如果手機有兩個屬性?

class Phone 
{ String number 
    String type 
[...] } 

而你要列名的:

phone1.number : 'cust_number1' 
    phone1.type : 'cust_type1' 
    phone2.number : 'cust_number2' 
    phone2.type : 'cust_type2' 

+0

這是一個問題,而不是答案。請寫下你在描述的情況下做什麼。 – krzychu