我是Grails和GORM的新手,我正在尝试一对多的关系,但不是默认的id字段。这是我的情景:
数据库中的表结构:
USERPROFILE
作用
USER_ROLE
域:
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?
由于
答案 0 :(得分:0)
按照惯例,GORM将使用/生成id
作为您域名的标识符。如果您有遗留表或只是希望破坏约定,则需要指定自定义列名。例如,对于角色映射,请添加以下内容:
static mapping = {
datasource 'ALL'
id name: 'idrole', column: 'idrole'
version false
}
答案 1 :(得分:0)
在我看来,最简单的方法是复制数据库,然后在拥有旧表时更改id字段的名称。如果没有,那么只要遵守惯例就可以简化生活。