我有一个带有嵌入式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'
}
}
答案 0 :(得分:1)
在Bar
类上指定自定义列名称,如下所示:
class Foo {
Bar bar
static embedded=['bar']
}
class Bar {
String bazIsReallyLong
static mapping = {
bazIsReallyLong column:'baz'
}
}
在Grails 2.0上测试,这创建了一个Foo
表,列名为ID
,VERSION
和BAZ
。
但这会影响包含Baz
的所有表格。
另一个选项是将映射类的名称更改为更短的名称,如下所示:
class Foo {
Bar b
static embedded=['b']
}
class Bar {
String bazIsReallyLong
}
这会创建列B_BAZ_IS_REALLY_LONG
,这至少会有所帮助。
我没有看到任何显式重命名嵌入列的选项。
答案 1 :(得分:0)