我正在考虑将我的应用程序的持久性映射从hibernate hbm文件移动到grails域对象。该架构不符合Grails的许多列命名约定,包括组合列名称。我想要做的是:
class Foo{
Bar bar
static embedded = ['bar']
static mapping = {
bar.baz column:'baz'
bar.quz column:'qux'
}
}
class Bar{
String baz, qux
}
此问题有jira。不幸的是,它已经开放了将近两年,没有任何变化。是否有一种解决方法可以解决这个在db中更改列的问题?
答案 0 :(得分:2)
而不是使用嵌入变量为您的Bar类创建自定义hibernate UserType。然后,您可以将该自定义类型映射到您想要的任何列名称:
static mapping = {
bar type: BarUserType, {
column name: "bar"
column name: "quz"
}
}
答案 1 :(得分:1)
我认为目前唯一的方法(grails 2.1)将映射放在Bar中,
class Bar {
String bar, quz
static mapping = {
baz column: "baz"
quz column: "quz"
}
}
答案 2 :(得分:0)
我找到的解决方法是使用@ grails.util.Mixin而不是嵌入:
@grails.util.Mixin(Bar)
class Foo{
static mapping = {
baz column:'bazz'
quz column:'quxx'
}
}
class Bar{
String baz, qux
}