2013-07-08 35 views
0

我是Grails和GORM的新手,我嘗試使用一對多關係,但不使用默認ID字段。這是我的情況:在數據庫GORM在grails中的ID查找字段

表結構:

USERPROFILE

  • iduserprofile
  • 用戶名

作用

  • idrole
  • 角色名

USER_ROLE

  • iduserprofile
  • idrole

域:

類USERPROFILE {

long iduserprofile 
String username 

    static mapping = { 
    datasource 'ALL' 
    id name: 'iduserprofile' 
    version false 
} 

類角色{

long idrole; 
String rolename; 

static mapping = { 
    datasource 'ALL' 
    id name: 'idrole' 
    version false 
} 

}

類的UserRole {

Userprofile user 
Role role 

static mapping = { 
    datasource 'ALL' 
    version false 
} 

}

當我試圖從UserRole的域用戶或角色對象,它始終是在USER_ROLE表中尋找user_id或role_id。 爲什麼不尋找iduserprofile或idrole?我如何更改代碼以查找isuserprofile或idrole?

感謝

回答

0

格姆按照慣例將使用/生成id作爲標識符的域。如果您有遺留表格或只是希望打破慣例,則需要指定自定義列名稱。例如,對於角色映射,添加以下內容:

static mapping = { 
    datasource 'ALL' 
    id name: 'idrole', column: 'idrole' 
    version false 
} 
+0

我試圖在映射中添加「列」,但它仍在尋找「user_id」。錯誤:列userrole0_.user_id不存在位置:442 – Dinesh

+0

刪除表並從域對象重新生成表... – danielad

0

在我看來,這樣做最簡單的事情將是複製你的數據庫,然後更改ID字段的名稱,如果你有舊的表。如果沒有,那麼只要遵守慣例就可以簡化生活。