自定义嵌入字段的列名称

时间:2011-12-29 14:54:16

标签: hibernate grails gorm

我有一个带有嵌入式Bar字段的Foo域类:

class Foo {
  Bar bar

  static embedded=['bar']
}

class Bar {
  String ham
}

这给了我一个带有bar_ham列的foo表。

问题是我的Foo.bar和Bar.ham实际上有更长的名字,因此该列的长度超过30个字符,这是Oracle不喜欢的。

那么如何自定义嵌入列的名称?

我尝试了类似下面的内容,但它不起作用:

class Foo {
  Bar bar

  static embedded=['bar']

  static mapping={
    bar column:'b'
  }
}

2 个答案:

答案 0 :(得分:1)

Bar类上指定自定义列名称,如下所示:

class Foo {
  Bar bar

  static embedded=['bar']

}


class Bar {
    String bazIsReallyLong

    static mapping = {
        bazIsReallyLong column:'baz'
    }
}

在Grails 2.0上测试,这创建了一个Foo表,列名为IDVERSIONBAZ

但这会影响包含Baz的所有表格。


基于评论的更新

另一个选项是将映射类的名称更改为更短的名称,如下所示:

class Foo {
  Bar b

  static embedded=['b']

}


class Bar {
    String bazIsReallyLong
}

这会创建列B_BAZ_IS_REALLY_LONG,这至少会有所帮助。

我没有看到任何显式重命名嵌入列的选项。

答案 1 :(得分:0)

请看看@

@AttributeOverride

第2.2.2.4节。