0

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

数据库中的表结构:

用户资料

  • iduserprofile
  • 用户名

角色

  • 偶像
  • 角色名

USER_ROLE

  • iduserprofile
  • 偶像

域:

类用户配置文件 {

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
}

}

类用户角色 {

Userprofile user
Role role

static mapping = {
    datasource 'ALL'
    version false
}

}

当我尝试从 UserRole 域中获取用户或角色对象时,它总是在 USER_ROLE 表中查找 user_id 或 role_id。为什么它不寻找 iduserprofile 或 idrole?如何更改代码以查找 isuserprofile 或 idrole?

谢谢

4

2 回答 2

0

在我看来,最简单的做法是复制您的数据库,然后如果您有旧表,则更改 id 字段的名称。如果不是,那么只需遵守约定,让生活变得简单。

于 2013-07-09T07:13:36.137 回答
0

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

static mapping = {
  datasource 'ALL'
  id name: 'idrole', column: 'idrole'
  version false
}
于 2013-07-08T18:17:36.687 回答