Grails中GORM中的ID查找字段

时间:2013-07-08 17:48:36

标签: grails gorm

我是Grails和GORM的新手,我正在尝试一对多的关系,但不是默认的id字段。这是我的情景:

数据库中的表结构:

USERPROFILE

  • iduserprofile
  • 用户名

作用

  • idrole
  • 角色名

USER_ROLE

  • iduserprofile
  • idrole

域:

class Userprofile {

long iduserprofile
String username

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

class Role {

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?

由于

2 个答案:

答案 0 :(得分:0)

按照惯例,GORM将使用/生成id作为您域名的标识符。如果您有遗留表或只是希望破坏约定,则需要指定自定义列名。例如,对于角色映射,请添加以下内容:

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

答案 1 :(得分:0)

在我看来,最简单的方法是复制数据库,然后在拥有旧表时更改id字段的名称。如果没有,那么只要遵守惯例就可以简化生活。